zoukankan      html  css  js  c++  java
  • poj1657---chessboard

    对棋盘横纵坐标的解读

    str1="f3"

    str2="e9"

    x=abs(str1[0]-str2[0])

    y=abs(str1[1]-str1[1])

    如果x==y,在一条斜线上

    如果x==0或者y==0,在同一横行,或者同一列

    注意:我们谈的是x个和y个单位,所以加绝对值

    解题思路:找规律:

    王:x和y中较大的那个值

    后:两个位置如果在一条横线,一条竖线,一条斜线,输出1

    否则,输出2,对于后,任意两个不在一条横线,一条竖线,一条斜线的的位置,两步必到

    车:如果在同一竖,同一行,一步就到,无论在不在一条斜线上都两步必到

    象:x+y能被2整除就能到达,否则输出Inf

    在能到达的情况下,又分为走一步和走两步

    走一步:x==y

    走两步:直接else

    #include <stdio.h>
    #include <stdlib.h>
    #include<math.h>
    
    int main()
    {
        int cases;
        char str1[3],str2[3];
        scanf("%d",&cases);
        while(cases--)
        {
            int x,y;
            scanf("%s %s",str1,str2);
            x=abs(str1[0]-str2[0]);
            y=abs(str1[1]-str2[1]);
            if(x==0&&y==0){
                printf("0 0 0 0
    ");
                continue;
            }
            //
            if(x>=y)//x=y,也就是两个位置在一条斜线上,无论输出x还是y都一样
                printf("%d ",x);
            else
                printf("%d ",y);
            //
            if(x==0||y==0||x==y)
                printf("%d ",1);
            else
                printf("%d ",2);
            //
            if(x==0||y==0)
                printf("%d ",1);
            else
                printf("%d ",2);
            //
            if((x+y)%2==0)
            {
                if(x==y)
                    printf("%d
    ",1);
                else
                    printf("%d
    ",2);
            }
            else
                printf("Inf
    ");
        }
        return 0;
    }
     
  • 相关阅读:
    windows2000/xp运行命令全集
    IP数据包的校验和算法C#版(原)
    做系统清理的批处理
    Combox用ValueMember 之后再添加一项
    安装部署基础——Windows Application
    文件编码
    Left/right join 和inner join 区别
    应用Url重写时CSS引用问题
    数据绑定控件单选框
    算法题:水杯倒水的问题
  • 原文地址:https://www.cnblogs.com/gabygoole/p/4496891.html
Copyright © 2011-2022 走看看