7-1 输出全排列 (20 分)
请编写程序输出前个正整数的全排列(),并通过9个测试用例(即从1到9)观察逐步增大时程序的运行时间。
输入格式:
输入给出正整数()。
输出格式:
输出1到的全排列。每种排列占一行,数字间无空格。排列的输出顺序为字典序,即序列排在序列之前,如果存在使得 并且 。
输入样例:
3
输出样例:
123 132 213 231 312 321
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int a[100];
for(int i=1;i<=n;i++)
{
a[i] = i;
}
do
{
int top =1;
for(int i=1;i<=n;i++)
{
printf("%d",a[i]);
}
printf("\n");
}
while(next_permutation(a+1,a+1+n));
return 0;
}code2:
#include<bits/stdc++.h>
using namespace std;
int book[230]= {0};
int a[203];
int n;
void dfs(int i)
{
if(i==n)
{
for(int j=0; j<n; j++)
{
printf("%d",a[j]);
}
printf("\n");
return ;
}
for(int j=1; j<=n; j++)
{
if(!book[j])
{
a[i++] = j;
book[j] =1;
dfs(i);
i--;
book[j] = 0;
}
}
}
int main()
{
//int n;
cin>>n;
dfs(0);
}