zoukankan      html  css  js  c++  java
  • 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 = 0,bishop = 0,king = 0 ;
            if(r1 == r2&&c1==c2)
            {
                printf("0 0 0
    ") ;
                continue ;
            }
            if(r1 == r2||c1 == c2)
                rook = 1 ;
            else rook = 2 ;
            if(fabs(r1-r2) == fabs(c1-c2))
                bishop = 1 ;
            else if((r1+c1)%2 == (r2+c2)%2)
            bishop = 2 ;
            else bishop = 0 ;
            king = max(fabs(r1-r2),fabs(c1-c2)) ;
            cout<<rook<<' '<<bishop<<' '<<king<<endl ;
        }
        return 0;
    }
    View Code
  • 相关阅读:
    hdu1006
    矩阵快速幂计算hdu1575
    MATLAB逻辑函数
    pair类型
    MATLAB基础操作符与数据格式显示
    MATLAB矩阵基础运算
    状态压缩DP常遇到的位运算
    HDU1565方格取数
    C语言的数组名和对数组名取地址
    ubunut 12.04 (64bit) android编译环境搭建
  • 原文地址:https://www.cnblogs.com/luyingfeng/p/3463026.html
Copyright © 2011-2022 走看看