CF Rook, Bishop and King

http://codeforces.com/contest/370/problem/A

题意:车是走直线的,可以走任意多个格子,象是走对角线的,也可以走任意多个格子,而国王可以走直线也可以走对角线,但是每次只能走一个格子。

思路:这个题的车和国王不难理解,车是如果两个点在同一列或者同一行上那么走一步即可到达,剩下的走两步都可到达。国王是走两个点的行和列的差值的最大值,也就是说king=max(fabs(r1-r2),fabs(c1-c2));表示我一直错在象上,错了六遍。。。。竟然还没掉rating,,,,不科学。看那个棋盘,若是两个点在同一对角线上那么走一步就能到,也就是说,如果fabs(r1-r2)= fabs(c1-c2),那就走一步,但是如果不在同一对角线上,可以走两步到,前提是,两个点都是黑的或都是白的。。。。。。

#include <iostream>
#include <stdio.h>
#include <cmath> using namespace std; int main()
{
int r1,c1,r2,c2 ;
while(~scanf("%d %d %d %d",&r1,&c1,&r2,&c2))
{
int rook = ,bishop = ,king = ;
if(r1 == r2&&c1==c2)
{
printf("0 0 0\n") ;
continue ;
}
if(r1 == r2||c1 == c2)
rook = ;
else rook = ;
if(fabs(r1-r2) == fabs(c1-c2))
bishop = ;
else if((r1+c1)% == (r2+c2)%)
bishop = ;
else bishop = ;
king = max(fabs(r1-r2),fabs(c1-c2)) ;
cout<<rook<<' '<<bishop<<' '<<king<<endl ;
}
return ;
}
上一篇:delphi 控制 EXCEL 数据透视表


下一篇:站点防火墙api,增加黑名单IP接口,增加用post,修改用put,php案例