本文共 508 字,大约阅读时间需要 1 分钟。
简单的动态转移: O(N*N)
反向思维,若当前数i为Alice一定输,则枚举因数k后,i+k一定为Alice必赢的局面。
// ShellDawn// LeetCode1025// No.40bool divisorGame(int N){ int dp[1005]; // 1为必赢,0为必输 memset(dp,0,sizeof(dp)); for(int i=1;i<=N;i++){ for(int j=i+1;j<=N;j++){ // 枚举因数k int k = j - i; if(j%k == 0 && dp[i] == 0) dp[j] = 1; } } if(dp[N]) return true; return false;}
这 题 还 有 个 规 律 \red{这题还有个规律} 这题还有个规律 N为偶数Alice赢,奇数输,O(1)
可能正好碰巧了吧,跪求原因。
bool divisorGame(int N) { return N%2 == 0;}
转载地址:http://anwji.baihongyu.com/