LeetCode 五月打卡-day22
Posted 王六六的IT日常
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 五月打卡-day22相关的知识,希望对你有一定的参考价值。
464. 我能赢吗
参考题解:
【负雪明烛】图解算法:递归,步步优化,弄清每个细节
【宫水三叶】博弈论 DP 运用题
class Solution
int n, t;
int[][] f = new int[1 << 20][2];
// 1 true / -1 false
int dfs(int state, int tot, int k)
if (state == ((1 << n) - 1) && tot < t) return -1;
if (f[state][k % 2] != 0) return f[state][k % 2];
int hope = k % 2 == 0 ? 1 : -1;
for (int i = 0; i < n; i++)
if (((state >> i) & 1) == 1) continue;
if (tot + i + 1 >= t) return f[state][k % 2] = hope;
if (dfs(state | (1 << i), tot + i + 1, k + 1) == hope) return f[state][k % 2] = hope;
return f[state][k % 2] = -hope;
public boolean canIWin(int _n, int _t)
n = _n; t = _t;
if (t == 0) return true;
return dfs(0, 0, 0) == 1;
以上是关于LeetCode 五月打卡-day22的主要内容,如果未能解决你的问题,请参考以下文章