标签:遍历 const int dfs 学长 BFS 初学 关于 define
在寒假集训中的某一节课中(划水太严重忘了哪一节)看到了穆学长做的程序,首先惊叹于学长的能力(YYDS!)其次对于展示的动图能够生动形象的展示出深度优先遍历和广度优先遍历的区别。
本文只浅谈BFS
类似于一条路走到最后的感觉(一根树上吊死)(不见南墙不回头)
但是遍历到最后能得到迷宫的所有结果
重点是对递归的理解相当于E - 爬楼梯 | SDUT OnlineJudge的高级版前路不通会在此路找到另一条走法,直到当前没有路才会返回到上一层
经典例题
1 #include <bits/stdc++.h> 2 #define endl '\n' 3 #define x first 4 #define y second 5 #define int long long 6 #define Tang ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); 7 8 using namespace std; 9 10 const int N=10; 11 const int INF=0x3f3f3f3f; 12 const int mod=1e9+7; 13 14 int n; 15 int q[N]; 16 int path[N]; 17 bool st[N]; 18 19 void dfs(int u) 20 { 21 22 if(u>n) 23 { 24 for(int i=1;i<n;i++) 25 cout << path[i] << ","; 26 cout << path[n] << endl; 27 return; 28 } 29 for(int i=1;i<=n;i++) 30 { 31 if(!st[i]) 32 { 33 path[u]=q[i]; 34 st[i]=true; 35 dfs(u+1); 36 path[u]=0; 37 st[i]=false; 38 } 39 } 40 41 } 42 43 void solve() 44 { 45 46 cin >> n; 47 for(int i=1;i<=n;i++) 48 cin >> q[i]; 49 dfs(1); 50 51 } 52 53 signed main() 54 { 55 Tang 56 int T=1; 57 //cin >> T; 58 while(T--) 59 solve(); 60 61 return 0; 62 63 }
标签:遍历,const,int,dfs,学长,BFS,初学,关于,define 来源: https://www.cnblogs.com/Tang-132520/p/15935760.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。