[算法]算法学习06

狼羊草问题

建立全量的状态集合,以及状态转移的流程,从一种状态搜索到另一种状态,并不是很难。

24点计算器

问题是给定四个数字,检查能否通过在其中使用四则运算得到24.
通过枚举每种排列方式,然后枚举各种计算符号,以及枚举每种计算顺序可以得到结果。
这里我感觉可以有新的解法:
1.先对24质因数分解,并记录住分解后的下家。
2.然后遍历着从四个数字中取两个,看是否能通过四则运算得到分解后的结果。
3.能的话就将问题转化为了另两个数能否得到分解后的下家的的子问题
(欠周全,这才是对后一步为乘法的先算两端的情况)
有个疑点,通过枚举逐步确定一个数字一个符号,然后转化问题为子问题的递归方式会丢掉 12 + 34 这样的结果。

多点同线的问题

枚举每一个点,然后计算它与其他点的斜率,若有两个斜率相等则为三点共线。
优化的话可以记录求结果的两点及斜率,再用时直接取,使用二维数组及两点idx,比map更快,剪掉了一半的计算时间。

大数计算

一种通俗易懂的方式是用字符串记录大数,然后模仿竖式乘法等等方式来计算结果。
另一种方式是 用高8位和低8位 两个数字来共同表达一个大数,计算的方式是用位计算,在每个数字的连接处模拟位计算。有些复杂但是有意思,有时间闲下来的时候可以动手试试。

推箱子

这个就很有意思了
箱子在所有可能位置为全部的状态,通过对状态的搜索达到结果。
求能否到达使用深搜,最优几步使用广搜。
首先先对地图剪枝,角落的点进去就出不来,所以为死点不能走到,死点之间且一面全是墙的也是不可到点。
其次每次推动箱子之后,要记录前一个点的位置,即找到角色位置,因为需要判断下一个方向角色能否到达,这又是一个深搜。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值