从N个箱子放n个卡片的问题,理解深度优先算法
int a[99],book[99],n;
void dfs(int step){
inti;
if(step==n+1)
{for(i=1;i<=n;i++)
cout<<a[i]<<"\n";
}
for(i=1;i<=n;i++)
if(book[i]==0)
{
a[step]=i;
book[i]=1;
dfs(step+1);
book[i]=0; 特别注意!!!
}
}
int main(){
cin>>n;
dfs(1);
return0;
}
深度优先搜索的基本模型
Void dfs(int step)
{ 判断边界
尝试每一种可能for(i=1;i<=n;i++)
{
dfs(step+1);
}