5447. 石子游戏 IV

 

 

class Solution {
    public boolean winnerSquareGame(int n) {
        boolean[] dp = new boolean[n+1];  // dp[i] 表示有i个石子,alice先手是否可以赢
        for(int i = 1; i * i <= n; i++) {
            dp[i*i] = true; 
        }
        for(int i = 1; i <= n; i++) {
            if(!dp[i]) {
                for(int j = 1; j * j < i; j++) {
                    if(!dp[i-j*j]) dp[i] = true;  // 如果选完平方数个对手不能赢,则alice赢
                }
            }
        }
        return dp[n];
    }
}

 

posted @ 2020-07-12 14:30  Sexyomaru  阅读(120)  评论(0编辑  收藏  举报