骑士的移动(Knight Moves, UVa 439)
来源:互联网 发布:推荐高中数学视频软件 编辑:程序博客网 时间:2024/05/22 07:39
本题实际上就是一次BFS,很普通,我这里利用对称性,将a-h视作行,1-8视作列,且a在上,h在下,1在左,7在右,这样符合C语言的数组习惯
#include<iostream>#include <queue>#include <string>using namespace std;const int maxn = 8+5;int dir[maxn][maxn]; //初始值设为0,表示还未访问,出发点的值设为1,以后没进一层,相应位置dir值加1,输出最后结果记得减1queue<int> qx, qy;int tox[] = {-2,-1,1,2,2,1,-1,-2};int toy[] = {1,2,2,1,-1,-2,-2,-1};void go(string s1, string s2){int x1 = s1[0] - 'a', y1 = s1[1] - '1';int x2 = s2[0] - 'a', y2 = s2[1] - '1';qx.push(x1); qy.push(y1); dir[x1][y1] = 1;while(!qx.empty()) //既然qx,qy同进同出,判断一个就好{int x = qx.front();qx.pop();int y = qy.front();qy.pop();if(x == x2 && y == y2) break;for(int i = 0; i < 8; i++){if (x + tox[i] >= 0 && x + tox[i] <= 7 && y + toy[i] >= 0 && y + toy[i] <= 7 && dir[x + tox[i]][y + toy[i]] == 0){dir[ x + tox[i] ][ y + toy[i] ] = dir[x][y] + 1;qx.push(x + tox[i]); qy.push(y + toy[i]);}}}cout<<"To get from " <<s1 << " to "<< s2<<" takes "<< dir[x2][y2] - 1<< " knight moves."<<endl;}int main(){string s1, s2;while(cin>>s1>>s2){//初始化memset(dir, 0, sizeof(dir));while (!qx.empty()) qx.pop();while(!qy.empty())qy.pop();go(s1, s2);}}
阅读全文
0 0
- 骑士的移动(Knight Moves,UVa 439)
- UVa 439 Knight Moves 骑士的移动
- 骑士的移动(Knight Moves, UVa 439)
- UVa OJ 439 - Knight Moves 骑士移动
- uva 439 Knight Moves 骑士移动
- 习题 6-4 UVA 439 Knight Moves 骑士的移动
- uva 439 Knight Moves(骑士的移动)BFS
- 骑士的移动(Knight Moves)
- uva 439 Knight Moves 骑士移动 —— bfs
- 习题6-4 骑士的移动(Knight Moves, UVa 439)
- UVA 439 骑士(Knight Moves ) 很基础的BFS
- hdu 1372 Knight Moves 骑士的移动 bfs--马走日
- UVa439 习题 6-4 骑士的移动(Knight Moves)
- uva 439 knight moves
- uva 439 - Knight Moves
- uva 439 - Knight Moves
- uva 439 - Knight Moves
- uva 439 - Knight Moves
- Unity UGUI 多张图片合成一张 记时 显示ICO
- 使用原生的JavaScript代替jQuery的操作DOM
- 多年的博客账号丢失了,新开一个
- Spring jdbcTemplete查询
- [译]The Python Tutorial#4. More Control Flow Tools
- 骑士的移动(Knight Moves, UVa 439)
- ContentProvider之call()方法
- js 实现 复制、粘贴
- opencv 模板匹配(cvMatchTemplate)
- 教你上传本地代码到github
- idea InterliJ 2017.01.04 UML插件安装及使用
- Android dex2oat命令参数解释
- Android / iOS 静态代码扫描工具调研
- CUDA By Examples 10