Algorithm
lc464_我能赢吗
思路: 好像是一个除数奇偶和余数叠加在一起的判断
假设: 如果除法结果是偶数,那么先手必胜
因为先手可以先给出余数-1
,然后就可以一直用这个策略,保持除法结果在偶数
规律没这么简单,暂时想了比较久没有找到,看答案吧
结果发现无法找规律(不该没有先看数据范围…),而是要 记忆化搜索 + 状态压缩
链接:https://leetcode.cn/problems/can-i-win/solution/wo-neng-ying-ma-by-leetcode-solution-ef5v/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| func canIWin(maxChoosableInteger, desiredTotal int) bool { if (1+maxChoosableInteger)*maxChoosableInteger/2 < desiredTotal { return false }
dp := make([]int8, 1<<maxChoosableInteger) for i := range dp { dp[i] = -1 } var dfs func(int, int) int8 dfs = func(usedNum, curTot int) (res int8) { dv := &dp[usedNum] if *dv != -1 { return *dv } defer func() { *dv = res }() for i := 0; i < maxChoosableInteger; i++ { if usedNum>>i&1 == 0 && (curTot+i+1 >= desiredTotal || dfs(usedNum|1<<i, curTot+i+1) == 0) { return 1 } } return } return dfs(0, 0) == 1 }
|
Review
【TED演讲】美国被遗忘的工人阶级
马太效应一直在持续,贫穷的马太效应也一样如此,我们需要一个更好的解决方法,让父母减少给孩子的负面影响
并且还需要让人们知道不要受限于自己的处境,你能做你想做的一切,为而不争地去做
但是现实是没有更好的生活,大家连生育都不想进行,所以还是需要很多的思考和努力去解决这些问题
Tips
【Golang】怎样优雅的清空切片
Share
VScode ssh免密登录设置