Description
易错点
assuming both players play optimally.
Means 你需要保存一个关于N的最佳数组,每轮归谁都会是最佳的
Then Prove N 为奇数的时候 Alice(先手)必败,N 为偶数的时候 Alice 必胜。
1.(N=1 和 N = 2) 时结论成立。
2.(N>2) 时,假设 (N<=k)时该结论成立,则 (N = k + 1)时:
如果 k 为偶数,则 k + 1 为奇数,x是 k + 1的因数,只可能是奇数,而奇数减去奇数等于偶数故轮到 Bob 的时候都是偶数,故此时无论 Alice 拿走什么,Bob 都会处于必胜态,所以 Alice 处于必败态。
如果 k 为奇数,则 k + 1 为偶数,x可以是奇数也可以是偶数,若 Alice 减去一个奇数,那么k+1−x 是一个小于等于 k 的奇数,此时 Bob 占有它,处于必败态,则 Alice 处于必胜态。
综上所述,这个猜想是正确的。
Code
class Solution {
public:
bool divisorGame(int N) {
return N%2==0;
}
};