Help me! Can anyone tell me why my solution cannot pass the tests of "464. Can I Win"?
#include <numeric>
class Solution {
public:
    bool win(bool& mewin,bool me,vector<bool>& n,int dt)
    {
        for(int i=1;i<n.size();i++)
        {
            if(n[i]) continue;
            if(i>=dt)
            {
                return true;
            }
            n[i]=true;
            bool w = win(mewin,!me,n,dt-i);
            if(!w && me) mewin = true;
            n[i]=false; 
        }
        return false;
    }
    bool canIWin(int maxChoosableInteger, int desiredTotal) {
        if(maxChoosableInteger>=desiredTotal) return true;
        int sum = 0;
        vector<bool> n(maxChoosableInteger+1);
        for(int i=1;i<n.size();i++)
        {
            n[i] = false;
            sum+=i;
        }
        if(sum<desiredTotal) return false;
        bool mewin = false;
        win(mewin, true, n, desiredTotal);
        return mewin;
    }
};
Comments (0)