目录
输出全排列
一、问题描述
二、运行环境说明
三、代码段
四、效果展示
输出全排列
备注:大二(上)数据结构课程设计A题
一、问题描述
请编写程序输出前n个正整数的全排列(n<10),
并通过9个测试用例(即n从1到9)观察n逐步增大时程序的运行时间
输入格式:
输入给出正整数n(<10)
输出格式:
输出1到n的全排列。每种排列占一行,数字间无空格。
排列的输出顺序为字典序,即序列a1,a2,⋯,an排在序列b1,b2,⋯,bn之前,
如果存在k使得a1=b1,⋯,ak=bk 并且 ak+1<bk+1
输入样例:
3
输出样例:
123
132
213
231
312
321
二、运行环境说明
 三、代码段
 三、代码段
 
#include <iostream>
#include <ctime>
using namespace std;
const int N = 20;
int n;
bool st[N];
int path[N];
clock_t startTime,endTime;
void dfs(int u)
{
    if(u == n)
      {
          for (int i = 0; i < n; i++)
            printf("%d",path[i]);
          puts("");
          return;
      }
      
    for (int i = 1; i <= n; i ++)
      {
          if(!st[i])
            {
                path[u] = i;
                st[i] = true;
                dfs(u+1);
                st[i] = false;
            }
      }
}
int main()
{
    cin>>n;
    
    startTime = clock();
    dfs(0);
    endTime = clock();
    cout<<"n等于"<<n<<"时,程序用时"<< (double)(endTime - startTime)/CLOCKS_PER_SEC <<"秒"<<endl;
    
    return 0;
}四、效果展示























