全排列
这周刚接触到深广搜,被卡成孙子,不看别人代码,一个题都写不来,这应该是最水的一个题了吧,先从1开始搜,每搜索一个数后标记已搜索过,如果无法搜索就进行回溯。大概我现在只能理解到这,希望慢慢把深广搜干掉。
#include<iostream>
using namespace std;
int a[9],n;
bool vis[9];
void dfs(int step)
{
if(step==n+1){
for(int i=1;i<n+1;i++){
if(i>1&&i!=n+1) cout<<" ";
cout<<a[i];
}
cout<<endl;
}
for(int i=1;i<n+1;i++){
if(vis[i]==0){
a[step]=i;
vis[i]=true;
dfs(step+1);
vis[i]=false;
}
}
}
int main()
{
while(cin>>n){
dfs(1);
}
}