zoukankan      html  css  js  c++  java
  • 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[10][10];
    
    int fabs(int x,int y)
    {
     if (x>y) return x-y;
     else return y-x;
    }
    
    int rock()
    {
    
        if (a==c || b==d) return 1;
        else return 2;
    }
    int judge (int x,int y)
    {
        if ((x&1) && (y&1)) return 1;
        if (!(x&1) && !(y&1)) return 1;
        return 0;
    }
    int bishop()
    {
    
    
        if (a-b==c-d || a+b==c+d)
            return 1;
        if (judge(a,b)==judge(c,d)) return 2;
        else return 0;
    
    }
    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
    ",rock(),bishop(),king());
        }
        return 0;
    }
  • 相关阅读:
    从零开始学习SSH框架笔记之一 初识SSH框架及下载地址
    CentOS 6.0 升级内核步骤、方法
    解决Ubuntu详细信息中图形显示为未知的情况
    【Oracle XE系列之二】Oracle XE创建表空间、创建用户以及授权、查看权限
    排序算法大总结
    我的vimrc 设置
    你的c++学的怎么样?
    腾讯的笔试题一道
    一道递归算法题
    vc6 bug真多 写c++别用vc6
  • 原文地址:https://www.cnblogs.com/kkrisen/p/3463265.html
Copyright © 2011-2022 走看看