
回溯法
highacm
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
八皇后问题(回溯法)
记得以前c综合程序设计做过这题,记不清当时是用什么做的,总之代码没这么清晰易懂。 思路:经过思考可以发现,恰好每行每列各放置一个皇后。设用c[x]表示第x行皇后的列编号,则问题变成了全排列生成问题。而0~7的全排列只有8!=40320个,故用枚举法的话,枚举量不会超过它。使用递归枚举法实现这个算法,也即回溯法。 法一: #include int c[10]; void sear原创 2013-03-19 22:09:50 · 801 阅读 · 0 评论 -
uva639(放车问题)-回溯法
#include char s[8]; int map[5][5],n; int ok(int a,int b) { for(int i=a;i>=0;i--) if(map[i][b]<0) return 0; else if(map[i][b]==0) break; for(int j=b;j>=0;j--) if(map[a][j]<0) return 0; els原创 2013-03-23 12:52:45 · 738 阅读 · 0 评论 -
uva539(卡坦岛)-回溯法
#include #include int map[26][26],vis[26][26]; int n,m,pathmax; void dfs(int i,int d) { if(d>pathmax) pathmax=d; for(int j=0;j<n;j++) { if(!vis[j][i]&&!vis[i][j]&&map[i][j]&&i!=j) { vis[i][j原创 2013-03-23 12:54:53 · 616 阅读 · 0 评论 -
uva167(无异于八皇后问题)
#include int c[10],a[10][10],max; void search(int cur) { int i,j,tmp; if(cur==8) { tmp=0; for(i=0;i<8;i++) tmp+=a[i][c[i]]; if(tmp>max) max=tmp; } else for(i=0;i<8;i++) { int ok=1;原创 2013-03-24 21:44:17 · 584 阅读 · 0 评论