目录
输出全排列
一、问题描述
二、运行环境说明
三、代码段
四、效果展示
输出全排列
备注:大二(上)数据结构课程设计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;
}