c语言dfs算法全排列代码,c语言dfs解决全排列问题
如1,2,3三個元素的全排列為:
1,2,3
1,3,2
2,1,3
2,3,1
3,1,2
3,2,1
共3*2*1=6種
代碼簡單實現n個元素的全排列
#include
#define N 5
int a[100];//存放數字序列
int mark[100];//判斷數字是否使用過,mark[3]=1表示3這個數字能用
int count;
void dfs(int i,int a[N]);
int main(int argc, char *argv[])
{
int i;
for(i=0;i<=N;i++){//多初始化一位
mark[i]=1;//1代表該數可以使用
a[i]=0;//初始化序列
}
dfs(0,a);//沒有數字放入a中
printf("hava %d nums\n",count);
return 0;
}
void dfs(int i,int a[N]){
if(i==N){//已經放入了所需數目的數字
int i;//輸出序列
for(i=0;i
printf("%d ",a[i]);
}
printf("\n");
count++;
return;//輸出后一定要返回
}
//嘗試數字1到n
int n;
for(n=1;n<=N;n++){
if(mark[n]){//如果數字可以使用
a[i]=n;//將數字存入序列
mark[n]=0; //數字已經使用,將mark中數字狀態改變
dfs(i+1,a);//嘗試放入i+1個數字
mark[n]=1; //搜索完成后,該數字可用
}
}
}
n為3時
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
hava 6 nums
總結
以上是生活随笔為你收集整理的c语言dfs算法全排列代码,c语言dfs解决全排列问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 改成utc时间_C++下四种
- 下一篇: android 输入光标修改颜色_2.2