码迷,mamicode.com
首页 > 其他好文 > 详细

博弈论

时间:2015-08-28 08:27:25      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:

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");
    }
}
View Code

 

博弈论

标签:

原文地址:http://www.cnblogs.com/Rivendell/p/4765414.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!