博弈--hdu5754 Life Winner Bo

来源:互联网 发布:mac截图不在桌面 编辑:程序博客网 时间:2024/05/17 23:00

4种棋子1.king.2.rook(castle).3.knight.4.queen.从(1,1)移到(n,m)

给定type,n,m,B先手,求B,G胜,或平局D(没有到终点却无法移动)


#include <iostream>

#include <cstdio>

#include <cmath>

using namespacestd;


int main()

{

    int T;

    cin >> T;

    int n,m,t;

    while (T --) {

        scanf("%d%d%d",&t,&n,&m);

        if(n > m)swap(n, m);

        if(t ==1){//king 横竖斜只能走一步,同kiki's game

            if(n %2 && m % 2)printf("G\n");

            elseprintf("B\n");

        }

        elseif(t == 2){//车,G先走到(1,m - n + 1),接下来围绕对角线走

            if (n == m)printf("G\n");

            elseprintf("B\n");

        }

        elseif(t == 3){//PN图

            if(n == m && (n -1) % 3 ==0) printf("G\n");

            elseif(n + 1 == m && m %3 == 0)printf("B\n");

            elseprintf("D\n");

        }

        else{//威佐夫博弈

            m --,n --;

            int k = m - n;

            if(n == (int)((1.0 +sqrt(5.0)) * k /2.0) ) printf("G\n");

            elseprintf("B\n");

        }

    }

    return0;

}


原创粉丝点击