题解 | #老子的全排列呢#
老子的全排列呢
https://ac.nowcoder.com/acm/problem/15128
内容持续更新欢迎,互关> https://ac.nowcoder.com/acm/contest/profile/453623014 ○| ̄|_
#include<bits/stdc++.h>
using namespace std;
int a[10],b[10];
void dfs(int num)
{//正如下面的说的,num的数值代表从1开始遍历,遍历到了某一组的第几个数字了
if(num>8)
{
for(int i=1;i<=8;i++)cout<<a[i]<<' ';cout<<endl;
//输出完要return,要不然就死循环了,永无出头之日
return ;
}
for(int i=1;i<=8;i++)
{//如果i这个数字在这一组中还没有被用过
if(b[i]==0)
{
//把i某一组数字的第num个位置上
a[num]=i;
//用过之后标记一下,表示不能再用了
b[i]=1;
dfs(num+1);
//用完之后标记0,表示用完了,下次可以继续用了
b[i]=0;
}
}
}
int main()
{//从第一个数开始遍历(第一个数不一定是1,上面的那个num是代表处理的某一组的第几个数字
dfs(1);
}