include[HTML_REMOVED]
using namespace std;
bool b[100];
int n,path[100];
void dfs(int u)
{
if(u>n)//当到一个叶节点的时候
{
for(int i=1;i<=n;i)//以后写算法定义i在括号里面定义,定义为全局变量影响结果
{
printf(“%d “,path[i]);//输出每一行的数,即为解
}
printf(“\n”);
return;
}
else
{
for(int i=1;i<=n;i)//从1到n进行全排列
{
if(b[i]==false)//1到n中没有用过的数把它保存在路径中
{
//printf(“%d “,i);
path[u]=i;//u代表行数,第一行第二行等
b[i]=true;//表示该数已经用过
dfs(u+1);//寻找下一行,找到行尾,从根到叶节点就为一个解
b[i]=false;//回溯,在另一个分支不影响接下来的寻找,另一个分支就是下一个循环
path[u]=0;
}
}
}
}
int main()
{
scanf(“%d”,&n);
dfs(1);
return 0;
}
牛逼
牛逼