国际象棋走棋步数(Distance on Chessboard)计算程序
2012-11-08 19:33
429 查看
点击打开链接
国际象棋的棋盘是黑白相间的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
源程序如下:
国际象棋的棋盘是黑白相间的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
源程序如下:
#include <stdio.h> #define MAX(x,y) ((x>y)?x:y) #define ABS(z) ((z<0)?(-z):(z)) int main(void) { int n,nn,k,q,r,b,i,j; char c1[3]="00\n",c2[3]="00\n"; scanf("%d",&nn); for(n=0;n<nn;n++) { k=0;q=0;r=0;r=0; scanf("%2s %2s",c1,c2); i=ABS((c1[0]-c2[0])); j=ABS((c1[1]-c2[1])); if(i==0&&j==0) { printf("0 0 0 0\n"); continue; } else k=MAX(i,j); if(i==0||j==0||i==j) q=1; else q=2; if(i==0||j==0) r=1; else r=2; if(i==j) b=1; else if((i+j)%2) b=-1; else b=2; if(b<0) printf("%d %d %d Inf\n",k,q,r); else printf("%d %d %d %d\n",k,q,r,b); } return 0; }
相关文章推荐
- 1657 Distance on Chessboard(简单计算题)
- Poj 1659 Distance on Chessboard(国际象棋的走子规则)
- POJ 1657 Distance on Chessboard 简单的计算问题
- Poj 1659 Distance on Chessboard(国际象棋的走子规则)
- Distance on Chessboard
- poj 1657 Distance on Chessboard
- Poj 1657 Distance on Chessboard
- POJ 1657 Distance on Chessboard 解题报告
- poj1657——Distance on Chessboard——简单题
- POJ 1657 Distance on Chessboard(搜索题)
- POJ 1657 Distance on Chessboard
- 百炼OJ 1657:Distance on Chessboard
- poj 1657 Distance on Chessboard(模拟贪心)
- POJ1657--Distance on Chessboard
- 百炼POJ 1657 Distance on Chessboard 解题报告
- poj1657——Distance on Chessboard
- POJ1657(Distance on Chessboard)
- POJ 1657 (Distance on Chessboard)
- (简单、大量) Distance on Chessboard (P1657)
- poj1657――Distance on Chessboard