蓝桥之剪邮票--BFS
2018-03-29 12:19
190 查看
剪邮票
如【图1.jpg】, 有12张连在一起的12生肖的邮票。
现在你要从中剪下5张来,要求必须是连着的。
(仅仅连接一个角不算相连)
比如,【图2.jpg】,【图3.jpg】中,粉红色所示部分就是合格的剪取。
请你计算,一共有多少种不同的剪取方法。
请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
如【图1.jpg】, 有12张连在一起的12生肖的邮票。
现在你要从中剪下5张来,要求必须是连着的。
(仅仅连接一个角不算相连)
比如,【图2.jpg】,【图3.jpg】中,粉红色所示部分就是合格的剪取。
请你计算,一共有多少种不同的剪取方法。
请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
#include <cstdio> #include <queue> #include <cstring> #include <algorithm> using namespace std; int dx[]= {-1,0,1,0}; int dy[]= {0,1,0,-1}; int vis[3][4]; struct node { int x; int y; } f,g; int sum; int bfs(int index,int step) { int ans=0; queue<node> q; f.x=index/4; f.y=index%4; q.push(f); vis[f.x][f.y]=0; while(!q.empty()) { f=q.front(); q.pop(); if(step==5) return 1; for(int i=0; i<4; i++) { g.x=f.x+dx[i]; g.y=f.y+dy[i]; if(vis[g.x][g.y]&&g.x>=0&&g.x<3&&g.y>=0&&g.y<4) { vis[g.x][g.y]=0; step=step+1; q.push(g); } } } return 0; } int main() { sum=0; for(int i=0; i<12-4; i++) { for(int j=i+1; j<12-3; j++) { for(int l=j+1; l<12-2; l++) { for(int h=l+1; h<12-1; h++) { for(int g=h+1; g<12; g++) { memset(vis,0,sizeof(vis)); vis[i/4][i%4]=1; vis[j/4][j%4]=1; vis[l/4][l%4]=1; vis[h/4][h%4]=1; vis[g/4][g%4]=1; // for(int a=0;a<3;a++){ // for(int b=0;b<4;b++){ // printf("%d",vis[a][b]); // } // printf("\n"); // } // printf("\n"); if(bfs(i,1)) { sum++; } } } } } } printf("%d\n",sum); return 0; }
相关文章推荐
- 蓝桥 剪邮票 (dfs+bfs)
- 蓝桥杯 剪邮票 (DFS+BFS)
- 蓝桥 卡片换位(bfs)
- 蓝桥 减邮票
- 蓝桥 2×3格子移字母 (bfs)
- 蓝桥 学霸的迷宫 BFS
- 2016蓝桥 剪邮票
- 蓝桥历届试题-剪邮票 dfs
- 蓝桥 卡片换位(bfs)
- 2016蓝桥杯省赛C/C++B组7题剪邮票 DFS枚举组合情况BFS判联通
- 2016 第七届 蓝桥杯第7题 剪邮票(bfs+dfs)
- 【BFS】【Rqnoj195】
- POJ 3984 迷宫问题 (bfs 水)
- hdu4771 Stealing Harry Potter’s Precious(状态压缩+bfs)
- 图的遍历(搜索)算法(深度优先算法DFS和广度优先算法BFS)
- HDU ACM 1253 胜利大逃亡(广搜BFS)
- 历届试题 大臣的旅费 (树的最长路径问题:两次BFS)
- bfs对路径有条件(必须拿到某个东西)
- bfs 思路 hrbust院赛初赛D
- HDU 2128 Tempter of the Bone II(BFS)