Codeforce 370A Rook, Bishop and King 数学规律

这个题目挺有意思的,给定 起终点,要你求车,象,王分别最少要走多少步

车横竖都能走,而且每步任意走几格,所以它是最容易处理的,如果在同行或者同列,就是1,否则就是2

象要找下规律,象任意对角线都能走,而且每步任意走几格,这个时候,发现图上的黑白色块给了很大提示,如果两个本身在同一对角线,就是1,如果不在,就要判断下是否在同一色块,是就是2,否则,就走不到,输出0,至于判断是否为同一色块,非常简单,代码中给出。

其实王也是非常简单的,八个方向都能走,但是每次只能走一步,只是我好脑残,连象的规律都找出来了,偏偏王还在一步步分情况,最后发现,其实不管是在八个方向内,还是不在八个方向上,最终走的步数就是 max(fabs(x1-x2),fabs(y1-y2))..简直不想说自己。。。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int a,b,c,d;
int maps[][]; int fabs(int x,int y)
{
if (x>y) return x-y;
else return y-x;
} int rock()
{ if (a==c || b==d) return ;
else return ;
}
int judge (int x,int y)
{
if ((x&) && (y&)) return ;
if (!(x&) && !(y&)) return ;
return ;
}
int bishop()
{ if (a-b==c-d || a+b==c+d)
return ;
if (judge(a,b)==judge(c,d)) return ;
else return ; }
int king()
{
return max(fabs(a,c),fabs(b,d)); }
int main()
{
while (scanf("%d%d%d%d",&a,&b,&c,&d)!=EOF)
{
printf("%d %d %d\n",rock(),bishop(),king());
}
return ;
}
上一篇:【js】 流式布局 页面


下一篇:【原创】构建高性能ASP.NET站点之一 剖析页面的处理过程(前端)