天天看點

1025.除數博弈

1025.除數博弈

1025.除數博弈

題解(數學歸納法)

列舉N=1 2 3 … 5的情況

發現當N為偶數,且兩個玩家都以最佳狀态參與遊戲的時候愛麗絲必勝,N為奇數鮑勃必勝。可通過數學歸納法證明:

當N為1或N為2,結論成立。

  • 當N為偶數,x為N的因數,可以是偶數也可以是奇數,那麼愛麗絲取奇數,N-x就為奇數,且N-x<=k,愛麗絲必勝。
  • 當N為奇數,x為N的因數,則隻能是奇數,N-x隻能是偶數,且N-x<=k,鮑勃必勝。

代碼

class Solution {
    public boolean divisorGame(int N) {
        return N % 2 ==0;
    }
}      

題解(遞推)

代碼

class Solution {
    public boolean divisorGame(int N) {
        boolean[] f = new boolean[N+2];//因為列舉f[2]= true 是以+2
        f[1] = false;
        f[2] = true;
        for(int i = 3; i <= N; i++){
            for(int j = 1; j < i; j++){
                if(i % j == 0 && !f[i-j]){
                    f[i] = true;
                    break;
                }
            }
        }
        return f[N];
    }
}