今天把简单题想的题太复杂了
知道是动态规划,也想到了检查后面的数中是否有dp[i]=0且可到达的。
class Solution {
public:
bool divisorGame(int N) {
if(N==1)return false;
if(N==2)return true;
vector<int> dp(N+1,0);
dp[1]=0;dp[2]=1;
for(int i=3;i<N+1;i++)
{
for(int j=1;j<i;j++)
{
if(i%j==0&&dp[i-j]==0)
{
dp[i]=1;
break;
}
}
}
if(dp[N]==1) return true;
else return false;
}
};
好傻的方法,就硬试,状态转换方程也写不出来,
另一种方法居然是总结数学公式,奇数失败,偶数成功。。。