[结题报告]11494 - Queen Time limit: 1.000 seconds
2013-02-22 14:13
323 查看
Queen |
The Problem
The game of Chess has several pieces with curious movements. One of them is the Queen, which can move any number of squares in any direction: in the same line, in the same column or in any of the diagonals, as illustrated by the figure below (black dots represent positions the queen may reach in one move):The great Chess Master Kary Gasparov invented a new type of chess problem: given the position of a queen in an empty standard chess board (that is, an 8 x 8 board) how many moves are needed so that she reaches another given square in the board?
Kary found the solution for some of those problems, but is having a difficult time to solve some others, and therefore he has asked that you write a program to solve this type of problem.
The Input
The input contains several test cases. The only line of each test case contains four integers X1, Y1, X2 andY2 (1 ≤ X1, Y1, X2, Y2 ≤ 8). The queen starts in the square with coordinates (X1, Y1), and must finish at the square with coordinates (X2, Y2). In the chessboard, columns are numbered from 1 to 8, from left ro right; lines are also numbered from 1 to 8, from top to bottom. The coordinates of a square in line X and column Y are (X, Y).The end of input is indicated by a line containing four zeros, separated by spaces.
The Output
For each test case in the input your program must print a single line, containing an integer, indicating the smallest number of moves needed for the queen to reach the new position.Sample Input
4 4 6 2 3 5 3 5 5 5 4 3 0 0 0 0
Sample Output
1 0 2 参考代码: 题给定坐标,求西洋棋中皇后需要多少步才能到指定位置,西洋棋中皇后可以横,竖,斜走,另外不限步数,所以在棋盘的上坐标皇后最多2步即可到达.因此如果x,y相等不必走了,已经一致了,x,y任意一个相等,以及呈比例.只需一步.剩下的就是要走2步的了.
#include<stdio.h> int main(void) { int x1,x2,y1,y2; while(scanf("%d%d%d%d",&x1,&y1,&x2,&y2)!=EOF) { if((x1==0&&x2==0)&&(y1==0&&y2==0))break; if(x1==x2&&y1==y2) printf("0\n"); else if((y1==y2)||(x1==x2)) printf("1\n"); else if(((x1-x2)/(y1-y2)==-1||(x1-x2)/(y1-y2)==1)&&(x1-x2)%(y1-y2)==0) printf("1\n"); else printf("2\n"); } return 0; }
相关文章推荐
- [结题报告]12289 - One-Two-Three Time limit: 1.000 seconds
- [结题报告]11364 - Parking Time limit: 1.000 seconds
- [结题报告]10082 - WERTYU Time limit: 3.000 seconds
- [结题报告]100 - The 3n + 1 problem Time limit: 3.000 seconds
- [结题报告]10055 - Hashmat the Brave Warrior Time limit: 3.000 seconds
- [结题报告]458 - The Decoder Time limit: 3.000 seconds
- [结题报告]10340 - All in All Time limit: 3.000 seconds
- [结题报告]10235 - Simply Emirp Time limit: 3.000 seconds
- [解题报告]11494 - Queen
- [结题报告]11479 - Is this the easiest problem? Time limit: 1.000 seconds
- LDAP抛出Error Code 3 - Timelimit Exceeded 异常,导致CAS连接报错
- leetcode解题报告:121 Best Time to Buy and Sell Stock
- APMSer报 Cannot set time limit in safe mode 错误。
- LR中Summary和Average Transaction Response Time报告中的平均响应时间不一样的原因
- pgpool:connection_life_time和client_idle_limit参数的区别
- php set_time_limit() 函数
- php中设置set_time_limit不起作用的解决方法
- set_time_limit
- Fatal error: Maximum execution time of 30 seconds exceeded in
- max_execution_time与set_time_limit两个函数使用