Golang leetcode 464. Can I Win.go

编程入门 行业动态 更新时间:2024-10-19 12:43:13

Golang <a href=https://www.elefans.com/category/jswz/34/1769930.html style=leetcode 464. Can I Win.go"/>

Golang leetcode 464. Can I Win.go

思路

dp算法
用bitmap保存中间状态

code

func helper(maxInt, left, bit int, dp map[int]bool, bitmap []int) bool {if val, ok := dp[bit]; ok {return val}if left <= maxInt {for i := maxInt; i >= left; i-- {if (bit & bitmap[i]) == 0 {dp[bit] = truereturn true}}}for i := maxInt; i > 0; i-- {if (bit & bitmap[i]) > 0 {continue}bit |= bitmap[i]ret := helper(maxInt, left-i, bit, dp, bitmap)bit &= ^bitmap[i]if ret == false {dp[bit] = truereturn true}}dp[bit] = falsereturn false
}
func canIWin(maxChoosableInteger int, desiredTotal int) bool {dp := make(map[int]bool)sum := 0bitmap := make([]int, maxChoosableInteger+1)for i := maxChoosableInteger; i > 0; i-- {sum += ibitmap[i] = 1 << uint8(i)}if sum < desiredTotal {return false}return helper(maxChoosableInteger, desiredTotal, 0, dp, bitmap)}

更多内容请移步我的repo:

更多推荐

Golang leetcode 464. Can I Win.go

本文发布于:2024-02-10 18:53:18,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1676797.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:leetcode   Golang   Win

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!