1025.除数博弈

1025.除数博弈
1025.除数博弈
除数博弈

class Solution {
    public boolean divisorGame(int n) {
        //默认值为false
        boolean[] flag = new boolean[n + 5];

        //N为1时先手必输,N为2时先手必胜(最佳状态)
        flag[1] = false;
        flag[2] = true;

        
        for (int i = 3; i <= n; i ++) {
            for (int j = 1; j < i; j ++) {
                //i是N,j是x
                //先手的人要选择的数是j,用i-j替换黑板上的数字
                //对于后手的人来说,黑板上是i-j,如果flag[i-j]是false,说明后手的人输了
                if ((i % j) == 0 && !flag[i - j]) {
                    flag[i] = true;
                    break;
                }
            }
        }
        return flag[n];
    }
}
上一篇:LeetCode算法题-Valid Palindrome(Java实现)


下一篇:Dynamics CRM 2011/2013 section的隐藏