判断字段是否与枚举相同_算法和数据结构 | 状态枚举(一)

点击上方蓝字设为星标90bbe7b0007868e8daf348f6463c7afc.png

下面开始今天的学习~ 2cfa85fd172fe2e7e79fc5d6e98c4c6a.gif 本文来源于力扣圈子,作者:小白二号 原文链接:https://leetcode-cn.com/circle/article/7FXJsv/

0c1efe2ee2aa34ddc870a9b358e0ff83.png

背景

搜索是优化算法题的本源。所有的优化算法题均是在一个有限的搜索空间中,寻找最优解答。注意这里是有限的搜索空间,就算是实数的返回,也会有精度的要求,就算是二分,也会有搜索的上下界。

有些朋友在学习递归,回溯,动态规划,深度优先搜索,广度优先搜索等算法问题时,时常搞不清楚状态对象和状态转移。因此我开这个话题,聊聊搜索中的状态空间,以及高级算法中的思考方式。

cc1200f3b64c807d4c9bfd3d07eee409.png

搜索通解

假设一个题目的状态为 A,那么这个题目的通解是:

Java 实现

void search() {
    // 枚举所有的状态    for (A a : all) {
            collect(a);    }}
简单而言,就是枚举所有的状态值,对于每一个状态值,判断这一个状态值是否成立,如果成立,这个状态就纳入计算,至于这个计算是什么,就看题目的要求,比如说,01 背包的算总价值,迷宫题目的算长度等等。

9469e3161e221df86c5afd65a917fb15.png

状态

搜索题中,题目蕴含的每个变量都有一个上下界,而每个变量组合取值形成了状态空间。树的遍历题中,跟到叶子的路径是一个状态,图论题中,源点到所有点的所有路径都是一个状态。状态在理解题意后很容易找到,我随便挑几个题来分

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值