楼下的大佬们都用那么高级的函数(用函数的话不知道考试会不会禁),本蒟蒻就浅浅的讲一下本体的深搜做法!
简单讲一下思路:
首先定义标记数组和答案数组,接着遍历每个单独排列的每一位数字,如果没用过就用,反之则不用,如果这个单独排列已经搜完了,那我们就输出,而场宽我们可以用setw函数,如果为5,则输出setw(5)!
话不多说直接上AC代码:
#include<bits/stdc++.h>
using namespace std;
int vis[12];
int ans[12];
int n;
void dfs(int in_dex)
{
if(in_dex==n)
{
for(int i=0;i<n;i++)
{
cout<<setw(5);
cout<<ans[i];
}
cout<<endl;
return;
}
else
{
for(int i=1;i<=n;i++)
{
if(vis[i]==0)
{
ans[in_dex]=i;
vis[i]=1;
dfs(in_dex+1);
ans[in_dex]=0;
vis[i]=0;
}
}
}
}
int main()
{
cin>>n;
dfs(0);
return 0;
}