1025. Divisor Game
1025. Divisor Game
bool divisorGame(int N, bool res=false) {
if (dp[N] != 0) return dp[N]==1; // 返回已经求过的解
for(int i=1;!res && i<N;++i) { // 当前方案不能赢且可以继续搜索
if (N % i == 0) res = !divisorGame(N-i); // 选完轮到对方,如果对方成功,那么自己就失败
}
dp[N] = res? 1 : -1; // 不是自己赢就是对方赢
return res;
}
int dp[1001] = {0};#博弈 #DP