百炼OJ 1657:Distance on Chessboard
来源:互联网 发布:网络爬虫 用什么语言 编辑:程序博客网 时间:2024/05/16 06:39
1657:Distance on Chessboard
查看- 提交
- 统计
- 提示
- 提问
- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
- 国际象棋的棋盘是黑白相间的8 * 8的方格,棋子放在格子中间。如下图所示:
王、后、车、象的走子规则如下:- 王:横、直、斜都可以走,但每步限走一格。
- 后:横、直、斜都可以走,每步格数不受限制。
- 车:横、竖均可以走,不能斜走,格数不限。
- 象:只能斜走,格数不限。
写一个程序,给定起始位置和目标位置,计算王、后、车、象从起始位置走到目标位置所需的最少步数。 - 王:横、直、斜都可以走,但每步限走一格。
- 输入
- 第一行是测试数据的组数t(0 <= t <= 20)。以下每行是一组测试数据,每组包括棋盘上的两个位置,第一个是起始位置,第二个是目标位置。位置用"字母-数字"的形式表示,字母从"a"到"h",数字从"1"到"8"。
- 输出
- 对输入的每组测试数据,输出王、后、车、象所需的最少步数。如果无法到达,就输出"Inf".
- 样例输入
2a1 c3f5 f8
- 样例输出
2 1 2 13 1 1 Inf
- 来源
- POJ Monthly--2004.05.15 Liu Rujia@POJ
- 解题思路:先考虑两点重合。然后,
- 王:横坐标差和纵坐标差中较大的。(如差值为4, 6,那么先走6,直到4,然后走对角线。)
- 后:如果是在同行或同列或同斜线就是一步,否则两步。
- 车:同行或同列一步,否则两步。
- 象:同色块可达,不同色不可达。(见图),同斜线一步,否则两步。
#include <stdio.h>#include <math.h>#define MIN(a, b) (a < b ? a : b)#define MAX(a, b) (a > b ? a : b)int main(){ int t; char x1, x2; int y1, y2; scanf("%d", &t); while(t--) { scanf(" %c%d %c%d", &x1, &y1, &x2, &y2); if(x1 == x2 && y1 == y2){ printf("0 0 0 0\n"); continue; } x1 = 'h' - x1 + 1; x2 = 'h' - x2 + 1; printf("%d ",(int)MAX(fabs(x1 - x2), fabs(y1 - y2))); if(x1 == x2 || y1 == y2 || fabs((y1*1.0 - y2) / (x1 - x2)) == 1) printf("1 "); else printf("2 "); if(x1 == x2 || y1 == y2) printf("1 "); else printf("2 "); if((x1 + y1) % 2 == (x2 + y2) % 2) { if(fabs((y1*1.0 - y2) / (x1 - x2)) == 1) printf("1\n"); else printf("2\n"); } else printf("Inf\n"); } return 0;}
0 0
- 百炼OJ 1657:Distance on Chessboard
- 百炼 1657:Distance on Chessboard
- 百炼POJ 1657 Distance on Chessboard 解题报告
- Distance on Chessboard 1657
- 1657-Distance on Chessboard
- POJ 百练 1657: Distance on Chessboard
- PKU 1657 Distance on Chessboard
- poj 1657 Distance on Chessboard
- poj 1657 Distance on Chessboard
- poj 1657 Distance on Chessboard
- Poj 1657 Distance on Chessboard
- POJ 1657 (Distance on Chessboard)
- poj 1657 Distance on Chessboard
- poj 1657 Distance on Chessboard
- POJ 1657 Distance on Chessboard
- POJ 1657 Distance on Chessboard
- 百练Distance On ChessBoard
- POJ 1657 Distance on Chessboard(搜索题)
- qr code的使用
- JAVA 正则表达式 (超详细)
- 黑马程序员--集合
- 如何调试makefile变量
- SharePoint如何从服务端 删除Ribbon 的按钮
- 百炼OJ 1657:Distance on Chessboard
- [数据结构]链表
- loki仿函数原理
- 认识着色器
- 2015零售O2O的八大趋势
- spark-streaming对系统时间的要求
- ubuntu安装和查看已安装
- POJ 2828 Buy Tickets
- ab