1. 程式人生 > >誰能贏呢?

誰能贏呢?

() == 奇數 想去 std %d 棋盤 上下左右 clu

誰能贏呢?

題目大意:這是一個博弈遊戲,兩人輪流移動一個擺放在\(n\times n\)棋盤左上角的棋子,可以向上下左右的格子移動,不可以移動到已經走過的格子上,問先後手輸贏

Solution

用骨牌覆蓋的思想去考慮,如果\(n\)是偶數,一定可以被\(1\times2\)的骨牌完全覆蓋,那麽先手必贏,如果\(n?\)是奇數,那麽肯定在骨牌覆蓋之外還空著一個格子,先手必輸

Code

#include <iostream>
#include <cstdio>

using namespace std;

int main(){
    int n;
    while(scanf("%d", &n)){
        if(n == 0) break;
        if(n % 2 == 0)
            puts("Alice");//先手輸
        else 
            puts("Bob"); //先手贏
    }
    return 0;
} 

誰能贏呢?