HDU Knight Moves
来源:互联网 发布:淘宝点点 编辑:程序博客网 时间:2024/06/14 10:26
Knight Moves
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)
Total Submission(s) : 56 Accepted Submission(s) : 41
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
Of course you know that it is vice versa. So you offer him to write a program that solves the "difficult" part.
Your job is to write a program that takes two squares a and b as input and then determines the number of knight moves on a shortest route from a to b.
Input
Output
Sample Input
e2 e4a1 b2b2 c3a1 h8a1 h7h8 a1b1 c3f6 f6
Sample Output
To get from e2 to e4 takes 2 knight moves.To get from a1 to b2 takes 4 knight moves.To get from b2 to c3 takes 2 knight moves.To get from a1 to h8 takes 6 knight moves.To get from a1 to h7 takes 5 knight moves.To get from h8 to a1 takes 6 knight moves.To get from b1 to c3 takes 1 knight moves.To get from f6 to f6 takes 0 knight moves.
#include<iostream>#include<algorithm>#include<string.h>#include<cstdio>#include<queue>int d[8][2] = { {2,1},{2,-1},{-2,1},{-2,-1},{1,2},{1,-2},{-1,2},{-1,-2} };bool b[9][9];using namespace std;struct node{ int x, y,step;};int main(){ char a1[2], a2[2]; while (cin>>a1>>a2) { memset(b, 0, sizeof(b)); int x1, y1, x2, y2; x1 = a1[0] - 'a' + 1; y1 = a1[1] - '0'; x2 = a2[0] - 'a' + 1; y2 = a2[1] -'0'; queue<node> P; node dc; dc.x = x1, dc.y = y1,dc.step=0; P.push(dc); b[x1][y1] = 1; while (!P.empty()) { node de = P.front(); P.pop(); if (de.x == x2&&de.y == y2) { printf("To get from %s to %s takes %d knight moves.\n", a1, a2, de.step); break; } for (int i = 0; i < 8; i++) { int xx = de.x + d[i][0], yy = de.y + d[i][1], step2 = de.step + 1; if (xx >= 1 && xx <= 8 && yy >= 1 && yy <= 8&&b[xx][yy]==0) { b[xx][yy] = 1; dc.x = xx, dc.y = yy, dc.step = step2; P.push(dc); } } } while (!P.empty()) P.pop(); } return 0;}
- HDU 1372 knight moves
- HDU 1372 Knight Moves
- HDU-1372-Knight Moves
- hdu 1372 Knight Moves
- HDU 1372 Knight Moves
- hdu 1372 Knight Moves
- Hdu 1372 Knight Moves
- HDU 1372 Knight Moves
- HDU 2243 Knight Moves
- HDU 1372 Knight Moves
- HDU-1372Knight Moves
- HDU-1372-Knight Moves
- hdu 1372 Knight Moves
- hdu-1372-Knight Moves
- Knight Moves hdu BFS
- HDU 1372 Knight Moves
- hdu-Knight Moves
- HDU-1372-knight moves
- 使用openwrt系统组件mesh(802.11s)网络
- 日本人口每年下降90万人?日本:用机器人补足空缺 | 行业
- 电视剧也能训练人工智能?爱丁堡大学对此进行了实验 | 研究
- ES6 React 组件引用本地图片问题
- 干货!手机APP进行测试的流程详解
- HDU Knight Moves
- javascript面向对象tab切换
- Deep Learning 第四课 CNN 第一周 作业2 Convolutional Neural Networks: Application
- Android广播管理二--广播注册(registerReceiver)流程分析
- 在C#中GUID生成的四种格式
- 现场 | AAAI执委杨强:未来几年人工智能领域将有哪些技术热点?
- CentOS7搭建LAMP系统(Apache+mysql+php)
- 每天一个linux命令(23):Linux 目录结构
- 将excel文件压缩加密