Snake Ladders bfs
链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=555
题意:一个n*n格的棋盘,从1标号到n*n。从1开始走,每次投色子,可走1到6步中的任意一个步数,问最少投几次色子可到最后一格。其中有两种特殊通道,蛇和梯子,在蛇头所在的格子可以直接走到蛇尾所在的格子,在梯子底端所在的格子可以直接走到梯子顶端所在的格子。
思路:由于蛇和梯子作用是一样的,所以可以把它们看成一种。又由于蛇和梯子是不会重合的,所以它们不可能在同一个位置出现。故可以用barrier[x]数组来保存在特殊位置x处可以到达的位置y。grid[]数组来保存走的状态,-1表示不会走到,其它的数字表示最先可以到达该格子的投色子的次数。比如说某格子i在第一次投色子的过程中可以到达,标记为1,然后在对其他格子进行扩展的过程中,又可以到达格子i,此时不再更新grid[i],若果更新了的话,就会使所需要的投色子的次数变多。还有需要注意的是,格子的标号是从1开始的,一不小心就错了。
代码交上去一直re,不明所以,求大神指点。
#include<iostream> #include<cstdio> #include<cstring> #include<queue> #include<string> #include<cmath> #include<algorithm> #include<map> using namespace std;const int maxn=25*25; int grid[maxn]; int barrier[maxn];int main() {int d,n,s,l;int x,y,step;scanf("%d",&d);while(d--){step=0;memset(grid,-1,sizeof(grid));memset(barrier,0,sizeof(barrier));scanf("%d%d%d",&n,&s,&l);for(int i=1;i<=s+l;i++)//从1开始的 {scanf("%d%d",&x,&y);barrier[x]=y;}grid[1]=0;while(grid[n*n]==-1){for(int i=1;i<=n*n-1;i++){if(grid[i]==step){for(int j=1;j<=6;j++){x=i+j;if(x>n*n) break;if(barrier[x]!=0)x=barrier[x];if(grid[x]==-1)//避免重复grid[x]=step+1;// cout<<x<<' '<<grid[x]<<endl; }}}step++;}printf("%d\n",step);}return 0; }
转载于:https://www.cnblogs.com/54zyq/archive/2013/05/16/3082490.html
Snake Ladders bfs相关推荐
- hdu5025(bfs,状态压缩)
Saving Tang Monk Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
- HDU 5025:Saving Tang Monk(BFS + 状压)
http://acm.hdu.edu.cn/showproblem.php?pid=5025 Saving Tang Monk Problem Description <Journey to t ...
- LightOJ 1151 Snakes and Ladders (期望DP + 高斯消元)
Description 'Snakes and Ladders' or 'Shap-Ludu' is a game commonly played in Bangladesh. The game is ...
- 实时实例分割的Deep Snake:CVPR2020论文点评
实时实例分割的Deep Snake:CVPR2020论文点评 Deep Snake for Real-Time Instance Segmentation 论文链接:https://arxiv.org ...
- HDU-1459.非常可乐(BFS )
这道题TLE了很多次,原来一直以为将数字化为最简可以让运算更快,但是去了简化之后才发现,真正耗时的就是化简....还和队友学到了用状态少直接数组模拟刚就能过... 本题大意:给出可乐的体积v1,给出两 ...
- HDU1548:A strange lift(Dijkstra或BFS)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1548 题意:电梯每层有一个数,例如第n层有个数k, 那么这一层只能上k层或下k层,但是不能低于一层或高 ...
- HDU 1429 胜利大逃亡(续) (BFS+位压缩)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1429 胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others) ...
- usaco Overfencing 穿越栅栏(BFS)
Overfencing 穿越栅栏 农夫 John 在外面的田野上搭建了一个巨大的用栅栏围成的迷宫.幸运的是,他在迷宫的边界上留出 了两段栅栏作为迷宫的出口.更幸运的是,他所建造的迷宫是一个" ...
- 数据结构--搜索BFS
文章目录 广度优先搜索 典型例题 广度优先搜索 广度优先搜索类似于树的层次遍历过程.它需要借助一个队列来实现.如图2-1-1所示,要想遍历从v0到v6的每一个顶点,我们可以设v0为第一层,v1.v2. ...
最新文章
- wordpress android,WordPress for Android 2.0 试用记
- python一个月能学成嘛-0基础学Python,1个月写爬虫,走了哪些弯路?
- linux.调整收发队列,linux消息队列通信
- 【python】list,dict赋值不要用等号,要用extend,update
- 利用ComplexHeatmap绘制热图(一)
- oracle日期函数2!
- 在搭建tesseract-OCR环境中遇到问题和反省
- Mugeda(木疙瘩)H5案例课—快闪制作-岑远科-专题视频课程
- 学习笔记(1):FFmpeg打造Android万能音频播放器-实现变速变调功能(二)
- Python - 安装sentencepiece异常
- IOS音视频(四十五)HTTPS 自签名证书 实现边下边播
- Java实现仿win10计算器
- matlab向量与x正方向的夹角_matlab 一个向量和矩阵中各行向量的夹角余弦值
- 几种抽奖方式之轮盘抽奖
- kubeadm join时报错Unauthorized
- Python中%是什么意思?如何使用?
- python输出时间代码_Python获取世界多地时间怎么写代码呢?
- 2011年最新企业offer
- 亚马逊为什么能够成为创新力最强的公司
- 获取QQ所有的表情包,包括emoji,动态gif