您的位置:首页 > 汽车 > 时评 > Golang | Leetcode Golang题解之第365题水壶问题

Golang | Leetcode Golang题解之第365题水壶问题

2024/10/7 8:26:03 来源:https://blog.csdn.net/weixin_66442839/article/details/141442788  浏览:    关键词:Golang | Leetcode Golang题解之第365题水壶问题

题目:

题解:

type pair struct {x, y int
}func canMeasureWater(jug1Capacity int, jug2Capacity int, targetCapacity int) bool {//剪枝if jug1Capacity+jug2Capacity < targetCapacity {return false}var (dfs func(x, y int) bool   // jug1有x水,jug2有y水 能否达到targetvis = make(map[pair]bool) // 记忆化)dfs = func(x, y int) bool {//记忆化p := pair{x, y}if vis[p] {return false}vis[p] = true//x、y组合就是答案if x == targetCapacity || y == targetCapacity || x+y == targetCapacity {return true}//x、y分别装满、倒空if dfs(jug1Capacity, y) || dfs(0, y) || dfs(x, jug2Capacity) || dfs(x, 0) {return true}//x、y分别倒对方里x2y := min(x, jug2Capacity-y)y2x := min(y, jug1Capacity-x)return dfs(x-x2y, y+x2y) || dfs(x+y2x, y-y2x)}return dfs(0, 0)
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com