搜索 题目
1|0Sudoku(9*9)
两个优化:
- 按照人类直觉,可以填的数越少的位置越先填
- 使用二进制数字记录一行、列、宫中哪些数字用过,不使用数组,常数优化
2|0Sticks
64根棒子 直接搜索时间复杂度太高,需要剪枝优化
- 搜索顺序:对于每个
尽量先把大个的部分加进来,不行再用小的 - 冗余:(确保AB和BA不出现):
2.1 记录上次棒子取出位置,只取比他小的不取大的(跟搜索)
2.2 因为棒子长度可能相同,要记录上次失败时使用的棒子长度,再次枚举时不使用这个长度的 - 可行性剪枝 (确保失败的不找了)
·3.1 如果一次枚举是从空的开始的,而且失败了,那么直接放弃整个方案,因为这个失败棒放哪都是等效的,都注定失败
·3.2 如果一次枚举加入一根棒子,一段完成,但是之后的枚举失败了,同样放弃整个方案
因为后面放的都是用较小的棒子拼起来塞进去,根据贪心,相比于多个小棒子,大棒子肯定更优
大棒子都失败了,小棒子更不可能成功 - 最优性剪枝:不需要,只需要答案从小往大就行
- 记忆化:不需要,没有明确的状态可言
__EOF__
作 者:哈奇莱特
出 处:https://www.cnblogs.com/lighthqg/p/17689572.html
关于博主:这个人很懒 什么也没有留下
版权声明:未获得本人同意请勿随意转载
声援博主:制作不易 点个赞吧
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通