标签:
bzoj2463 谁能赢呢?
题目大意:给定一个n×n的方格,从(1,1)开始走,每次可以到上下左右没有到过的一个格子,alice先手,交替操作,如果先手必胜则输出‘Alice’,否则输出‘Bob’。
思路:lcomyn大爷秒暴结论。后来仔细想了想,只发现走一步肯定会改变格子奇偶性。其实如果n是偶数,那么就可以用2×1的骨牌覆盖,每次走到另一端后,另一个人走到新格子,所以先手必胜;如果n是奇数,那么就可以去掉第一个格子后骨牌覆盖,胜负正好反过来。
#include<iostream> #include<cstdio> using namespace std; int main() { int n; while(scanf("%d",&n)==1) { if (n==0) break; if (n%2) printf("Bob\n"); else printf("Alice\n"); } }
标签:
原文地址:http://www.cnblogs.com/Rivendell/p/4765414.html