Snakes and Ladders
来源:互联网 发布:人工智能领域期刊 编辑:程序博客网 时间:2024/05/29 03:14
描述
蛇和梯子游戏是一个非常流行的游戏。Fadi希望有人编写一个程序帮助他赢得比赛。Fadi是一个职业骗子,他投骰子可以得到任何期望的点数(1至6)。Fadi希望知道他至少需要投多少次骰子才能赢得比赛。
1.第一个和最后一个方格处没有梯子和蛇。
2.并且蛇和梯子不能相邻。
输入
T(测试数据的个数)
N(棋盘大小, 0<N<=20) S(蛇的个数) L(梯子的个数)
Sx1 Sy1 Sx2 Sy2 ... (蛇的头和尾)
Lx1 Ly1 Lx2 Ly2 ... (梯子的底和顶)
输出
至少需要投骰子的次数
样例输入
1
6 1 3
35 25
3 23 5 16 20 33
样例输出
3
————————————————————集训3.1的分割线————————————————————
思路:BFS。用结构体记录每个点及到达这个点至少需要的投骰子次数。
/*ID: j.sure.1PROG: LANG: C++*//****************************************/#include <cstdio>#include <cstdlib>#include <cstring>#include <algorithm>#include <cmath>#include <stack>#include <queue>#include <vector>#include <map>#include <string>#include <iostream>using namespace std;/****************************************/const int N = 405;int in[205];bool vis[N];int n, m;struct Node{int id;int ans;};queue <Node> q;int bfs(Node cur){vis[cur.id] = true;q.push(cur);Node tmp;while(!q.empty() && !vis[n]) {tmp.id = q.front().id; tmp.ans = q.front().ans;q.pop();for(int i = 1; i <= 6; i++) {Node nxt;nxt.id = tmp.id + i;if(in[nxt.id]) {nxt.id = in[nxt.id];}if(nxt.id == n) return tmp.ans+1;if(nxt.id < n) {vis[nxt.id] = true;nxt.ans = tmp.ans+1;//printf("%d->%d nxt.ans = %d\n", tmp.id, nxt.id, nxt.ans);q.push(nxt);}}}}int main(){#ifndef ONLINE_JUDGEfreopen("0.in", "r", stdin);freopen("0.out", "w", stdout);#endifint T;scanf("%d", &T);while(T--) {int sna, lad;scanf("%d%d%d", &n, &sna, &lad);n *= n;m = sna + lad;int id;memset(in, 0, sizeof(in));memset(vis, 0, sizeof(vis));for(int i = 1; i <= m; i++) {scanf("%d", &id);scanf("%d", &in[id]);}Node a;a.id = 1; a.ans = 0;printf("%d\n", bfs(a));}return 0;}
0 0
- snakes and ladders
- Snakes and Ladders
- Snakes and Ladders LightOJ
- Snakes and Ladders LightOJ
- [LightOJ 1151] Snakes and Ladders
- Snakes & Ladders
- LightOJ1151---Snakes and Ladders (高斯消元+概率dp)
- [概率DP] LightOJ 1151 - Snakes and Ladders
- Snakes & ladders Arab and North African Region,2002 BFS
- Arab and North African Region,2002(Snakes & ladders)
- UVa11459 - Snakes and Ladders(飞行棋类的游戏)
- 【LightOJ 1265】Snakes and Ladders(概率DP)
- POJ 1059 Chutes and Ladders
- POJ--1059 Chutes and Ladders
- POJ 1059 Chutes and Ladders 笔记
- 【poj2588】Snakes
- Dance Snakes
- Crossed ladders
- 误删mysql.user表,重新创建
- 轻量型thttpd+php5
- Docker秘籍 之 用PowerShell DSC配置Docker
- springMVC系列之(四) spring+springMVC+hibernate 三大框架整合
- HDOj题目1525 Euclid's Game(博弈)
- Snakes and Ladders
- poj 2070 Filling Out the Team
- java 关键字synchronized
- Java的HashMap和HashTable
- Linux——chattr改变文件属性
- POJ 1350
- 冒泡排序C++实现+优化
- 开始新的工作
- 扩展欧几里得