美文网首页
464. 我能赢吗

464. 我能赢吗

作者: 来到了没有知识的荒原 | 来源:发表于2020-08-10 11:13 被阅读0次

464. 我能赢吗

dfs+记忆化+状态压缩

class Solution {
public:

    bool dfs(int state,int maxnum,int tar,vector<int>&memo){
        if(memo[state]<2)return memo[state];

        for(int i=1;i<=maxnum;i++){
            if (state & (1 << (i - 1)))
                continue;
            int tmp=1<<(i-1);
            if(i>=tar || !dfs(state|tmp,maxnum,tar-i,memo)){
                memo[state]=1;
                return true;
            }
        }

        memo[state] = 0;
        return false;
    }
    bool canIWin(int maxnum, int tar) {
        if (maxnum > tar)return true;
        // 所有数都用完还达不到tar的时候,就是两边都输
        // 而dfs返回的是对方输的时候,判自己赢
        // 这种情况下就不是非输即赢,因此需要特判
        if ((maxnum + 1) * maxnum / 2 < tar)return false;

        vector<int>memo(1<<maxnum,2);

        return dfs(0,maxnum,tar,memo);
    }
};

相关文章

  • 464. 我能赢吗

    464. 我能赢吗 dfs+记忆化+状态压缩

  • 我能赢吗

    特例一:如果最大能选择的数字maxChoosableInteger比期望的总数desiredTotal要大,先手稳...

  • 游戏能赢,大学能赢吗?

    “今天又起的比较晚,大概是因昨夜在王者峡谷‘逛’的太晚,被敌方缠住,却想击杀主宰,心里坚持稳住能赢,于是就沉迷其...

  • 智力题

    我能赢吗 输入:maxChoosableInteger = 10desiredTotal = 11输出:false...

  • 苟住,我们能赢

    稳住,我们能赢。我更愿意称之为,苟住,我们能赢。你的目的是什么,为了赢,你愿意放弃很多,甚至苟活下去吗? 前一阵有...

  • 战略共赢

    什么是赢,我比你好,比你强算赢吗?确实这是战术上的赢,可是你能赢多久呢,什么是共赢,是我们都过的更好,共同发展,使...

  • 躺着能赢吗

    天下着雨,有点阴冷。 放假的第一天在床上躺了一天,刷手机,看闲书。 想给自己找点事做,却不知道做啥。 在一个舒适区...

  • 你能躺赢吗?

    生活会无情的让所有想“躺赢”的年轻人,深刻的痛知到--贫贱夫妻百事哀。 恋爱时固然欣喜若狂,因为荷尔蒙会跑赢你们的...

  • 2022-07-27

    自信放光芒 能赢能赢

  • 拖延,我能赢!

    拖延,我能赢! 文/爱乐 本周主题《拖延》——诗大人 我第一个报了...

网友评论

      本文标题:464. 我能赢吗

      本文链接:https://www.haomeiwen.com/subject/abgddktx.html