POJ1657--Distance on Chessboard
2015-10-12 14:44
429 查看
#include <iostream> #include <cstdio> #include <cstdlib> #include <cmath> #include <cstring> #include <string> #include <queue> #include <algorithm> using namespace std; int main() { int t; string s1,s2; cin>>t; while(t--) { cin>>s1>>s2; int x = abs(s1[0]-s2[0]); int y = abs(s1[1]-s2[1]); if(x+y==0) { cout<<"0 0 0 0"<<endl; continue; } if(x>y) cout<<x<<" ";//王只能走一步 else cout<<y<<" "; if(x==0||y==0||x==y) cout<<1<<" "; else cout<<2<<" "; if(x==0||y==0) cout<<1<<" "; else cout<<2<<" "; if(x==y) cout<<1<<endl;//象在x,y相差为偶数的时候,才能走到 else if(abs(x-y)%2==0) cout<<2<<endl; else cout<<"Inf"<<endl; //t--; } //cout << "Hello world!" << endl; return 0; }
Distance on Chessboard
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 25313 | Accepted: 8670 |
国际象棋的棋盘是黑白相间的8 * 8的方格,棋子放在格子中间。如下图所示:
王、后、车、象的走子规则如下:
王:横、直、斜都可以走,但每步限走一格。
后:横、直、斜都可以走,每步格数不受限制。
车:横、竖均可以走,不能斜走,格数不限。
象:只能斜走,格数不限。
写一个程序,给定起始位置和目标位置,计算王、后、车、象从起始位置走到目标位置所需的最少步数。
Input
第一行是测试数据的组数t(0 <= t <= 20)。以下每行是一组测试数据,每组包括棋盘上的两个位置,第一个是起始位置,第二个是目标位置。位置用"字母-数字"的形式表示,字母从"a"到"h",数字从"1"到"8"。
Output
对输入的每组测试数据,输出王、后、车、象所需的最少步数。如果无法到达,就输出"Inf".
Sample Input
2 a1 c3 f5 f8
Sample Output
2 1 2 1 3 1 1 Inf
相关文章推荐
- Android RecyclerView 使用完全解析 体验艺术般的控件
- TableView
- MySQL联表查询
- 3DTouch为你的app添加类似微信的快捷弹出按钮
- 基于netty TCP server server主动给client 发消息解决方案
- Python函数模块创建、发布和使用
- oracle中数据格式
- 一个优秀的权限系统
- app提交新版本流程(ios)
- XXE漏洞学习
- Mybatis大字段clob处理
- centos7 安装 nginx1.8+php5.6+postgresql9.4
- c#中的'&'和'&&','|'和'||'
- Sublime Text 3 控制台运行Python无法输出中文
- 全国火车票代售点查询api分享
- Java编程基础
- Ajax无刷新上传文件跨域问题解决办法
- pop 或者push一个viewController时候 会有键盘闪现出来 又消失
- 装饰者模式(decorator)
- HDOJ 题目3966 Aragorn's Story(树链剖分,树状数组)