7-11 输出全排列 (20 分)
请编写程序输出前n个正整数的全排列(n<10),并通过9个测试用例(即n从1到9)观察n逐步增大时程序的运行时间。
输入样例:
3
输出样例:
123
132
213
231
312
321
#include <iostream>
#include <string>
#include <string.h>
#include <algorithm>
using namespace std;
int a[11],c[11];
int b[11]={0};
int n;
void dfs(int x){
for(int i=1;i<=n;i++)
{
// cout<<"for"<<x<<" "<<i<<endl;
if(b[i]==0)
{
b[i]=1;
c[x]=a[i];
// cout<<c[x]<<endl;
if(x==n){
for(int i=1;i<=n;++i){
cout<<c[i];
}
cout<<endl;
}
else dfs(x+1);
b[i]=0;
}
}
}
int main(){
cin>>n;
for(int i=1;i<=n;++i){
a[i]=i;
}
dfs(1);
}
dfs 思想详情