本文主要是介绍博弈--hdu5754 Life Winner Bo,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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 namespace std;
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");
else printf("B\n");
}
else if(t == 2){//车,G先走到(1,m - n + 1),接下来围绕对角线走
if (n == m) printf("G\n");
else printf("B\n");
}
else if(t == 3){//PN图
if(n == m && (n - 1) % 3 == 0) printf("G\n");
else if(n + 1 == m && m % 3 == 0) printf("B\n");
else printf("D\n");
}
else{//威佐夫博弈
m --,n --;
int k = m - n;
if(n == (int)((1.0 + sqrt(5.0)) * k / 2.0) ) printf("G\n");
else printf("B\n");
}
}
return 0;
}
这篇关于博弈--hdu5754 Life Winner Bo的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!