Please,help me!
时间限制:1s 空间限制:250M
题目描述:
请你帮小圌编写一个程序,使用递归的方法,按从小到大的顺序输出 1~n 的全排列。
输入格式:
一行,一个数字 n(1≤n≤9) 。
输出格式:
按字典序从小到大的顺序输出 1∼n 的全排列,每行一个排列,同一行之间数字用一个空格隔开。
输入样例:
3
输出样例:
1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1
一下是我的代码
#include <iostream>
using namespace std;
bool a[11];//标记此数是否入选;
int b[20];//存储入选数
void dfs(const int &x,const int &n)
{
if (x>n)
{
//输出
for (int j=1;j<=n;j++) cout<<b[j]<<" ";
cout<<endl;
return;
}
for (int i=1;i<=n;i++)
{
if (a[i]==false) //可以选数
{
b[x]=i;//存储i
a[i]=true;//标记i
dfs(x+1,n);
a[i]=false;//取消标记
}
}
}
int main()
{
int n;
cin>>n;
for (int i=1;i<=n;i++) a[i]==false;//初始化
dfs(1,n);
return 0;
}
有什么可以优化的地方吗,或者有什么更高效的算法吗

