全排列 DFS 回溯
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                全排列  DFS 回溯
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                
                            
                            
                            //dfs全排列
#include<stdio.h>
#include <string.h>
char temp[5] = {'A','B','C','D'};//seed
char visited[5] ;//
char out[5] ;//保存生成的字符串
int deep ;
int pos ;//out數組的位置
void print(){printf("%s\n",out);
}
int dfs(int step){int i ;if (step>=4)//4表示字符串長度是4print();for ( i = 0 ; i < 4 ; i ++){if (!visited[i]){out[pos] = temp[i];visited[i] = 1;pos++;dfs(step+1);visited[i] = 0;//回溯pos--;//回溯}}}int main(){memset(visited , 0 ,sizeof(visited));pos = 0;dfs(0);return 0;
}
 
                        
                        
                        我自己花時間畫了一個比較形象的圖,來幫助你們理解,全排列是怎么映射到樹上并且怎么使用DFS來進行搜索和剪枝。希望有不對和可以補充的地方大家提給我。
如圖是一個 3個字母ABC的全排列樹。
 
 
總結
以上是生活随笔為你收集整理的全排列 DFS 回溯的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: Unity UGUI - Canvas
- 下一篇: (软件工程复习核心重点)第十二章软件项目
