当前位置: 代码迷 >> 综合 >> leetcode 1025: Divisor Game
  详细解决方案

leetcode 1025: Divisor Game

热度:54   发布时间:2024-01-16 17:56:22.0

leetcode 1025: Divisor Game

题意:Alice和Bob轮流玩游戏,Alice先玩。

给一个数N,对于这个数,都做下面两个操作:

第一步:选择一个数X,0<X<N,并且N%X==0;

第二步:N=N-X。

如果不能操作,就是输了。

思路:简单博弈吧。dp[i]表示当数是i的时候,当前选择的人会不会赢。

那么,dp[1]是输。

当i%j==0,dp[i]可以有dp[i-j]中false的转移过来了。无法转移,说明这个人必输。

class Solution {
public:bool divisorGame(int N) {vector<bool> dp(1010,false);dp[1] = false;for (int i = 2; i <= N; i++){for (int j = 1; j < i; j++){if (dp[i-j] == false && i%j== 0){dp[i] = true;break;}}}return dp[N];}
};

 

  相关解决方案