如果要你输出123456789的任意组合。你会怎么办呢?
用10个for循环?
那么20个呢?
用20个????
显然是不办事的,是的他出场了,那个无敌的东西bfs
不解释了
#include <iostream>
#include <stdio.h>
#define ll long long
using namespace std;
int sz[10];
int ans[10];
void bfs(int step)
{
if(step==10)
{
for(int i=1;i<10;i++)
{
cout<<ans[i];
}
cout<<endl;
return ;
}
for(int i=1;i<10;i++)
{
if(sz[i]==0)// 0 意味着没有被选中
{
sz[i]=1; //标记已经被选了
ans[step]=i; // 放到输出数组
bfs(step+1); // 核心代码
sz[i]=0; ///恢复。相当于把他取出来,换另外一个放进去
}
}
}
int main()
{
bfs(1);
return 0;
}