XDU寒假集训:week2-简单搜索
2019-02-13 22:05
357 查看
week2因为科三练车鸽的有点严重,下来要加紧补辽
(科三还没过啊摔
A:棋盘问题,类似八皇后,经典搜索,时间够,直接写
注意不在此列放置棋子的情况的递归所放置的位置
[code]#include<cstdio> int n,k; int cnt,ans; int book[10]; int map[10][10]; void dfs(int step) { if(cnt==k) { ans++; return; } if(step>n) return; for(int i=1;i<=n;i++) { if(map[step][i]==0&&book[i]==0) { book[i]=1; cnt++; dfs(step+1); cnt--; book[i]=0; } } dfs(step+1); return; } int main() { while(scanf("%d%d",&n,&k)) { if(n==-1&&k==-1) break; getchar(); ans=0,cnt=0; for(int i=1;i<=n;i++) book[i]=0; for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { char c=getchar(); switch(c) { case '#':map[i][j]=0;break; case '.':map[i][j]=1;break; default :break; } } getchar(); } dfs(1); printf("%d\n",ans); } return 0; }
B:待补
C:待补
D:
题意:给n个棒子,分成四组,问能否拼成正方形
思路:搜索思路很简单但是剪枝不好剪
所得:都注释在代码了
[code]#include<cstdio> #include<algorithm> using namespace std; int aver,n,flag,sum; int book[21],a[21]; int DFS(int num,int len,int st)//num表示已经拼出来几条边,len表示正在拼的长度 //st是剪枝关键之后再说 { if(num==3) //如果已经拼出来三条边,剩下的自然能够拼成第四条 { return 1; } if(len==aver)//如果拼出来一条边 { if(DFS(num+1,0,0)) //因为要重新拼出来一条边,所以需要从头开始搜索 //标记归0 return 1; } for(int i=st;i<=n;i++) { if(book[i]==0&&len+a[i]<=aver) //用book数组记录已经使用过的木棍 { book[i]=1; if(DFS(num,len+a[i],i+1)) //因为对前面的排查已经做过了 //用过的已经被标记,用不了的也不能用了 //再从头扫一遍就会浪费时间,所以保存这个标记 //下层循环从标记处开始就能够省去很多时间 return 1; book[i]=0; } } return 0; } int main() { int T; scanf("%d",&T); while(T--) { scanf("%d",&n); sum=0; int max=-1; for(int i=1;i<=n;i++) { book[i]=0; } for(int i=1;i<=n;i++) { scanf("%d",&a[i]); sum+=a[i]; if(a[i]>max) max=a[i]; } aver=sum/4; if(max>aver||sum%4!=0) { printf("no\n"); continue; } if(DFS(0,0,1)) printf("yes\n"); else printf("no\n"); } return 0; }
相关文章推荐
- 2016暑期集训---搜索(简单BFS)
- 寒假培训——简单搜索
- 2016暑期集训---搜索(简单BFS)
- 2016暑期集训---搜索(简单BFS+路径储存)
- 2017暑假集训 div1 简单搜索
- 寒假集训 最简单的bfs模板题Dungeon Master题解
- CSU-ACM2017寒假集训1B-简单二分和三分 HDU - 2141
- vue 简单仿写百度搜索
- 寒假集训作业(3)——栈与队列
- SDUT_2015寒假集训_结构体练习_J-逆序建立链表
- kuangbin带你飞 专题一 简单搜索 (题解)
- ElasticSearch简单搜索程序+分词(中文和拼音)
- 【Hello Python World】Week 1(2):变量和简单数据类型
- 【2018寒假集训 Day2】【动态规划】挖地雷
- 寒假集训——字典树(模板)
- [kuangbin带你飞]专题一 简单搜索 总结
- POJ-----1321搜索简单题
- kuangbin专题一 简单搜索 E,POJ 1426 Find The Multiple
- UVA 11732 "strcmp()" Anyone? 前缀树(Trie)+简单搜索
- [kuangbin带你飞]专题一 简单搜索-J - Fire!