当前位置: 首页 > news >正文

动态规划简单题2

leetcode91题(解码方法)

 分析题目:

1.这是一种解码,就是给多个数字组成的字符串,把这些数字解码成字母,看看一共有多少种

2.如果一个数字前有前导0就不合法,比如06,这与6不同,所以06不能解码

算法原理:

状态表示:经验+题目(以i位置为结尾时,巴拉巴拉)

根据题目,状态就是以i位置为结尾时,一共有多少总解码方式

所以dp[i]:以i结尾时有多少总解码方式

状态转移方程:根据最近的一步,划分问题

成功与失败都有可能,所以最后的dp[i]编写代码时要注意 

 初始化:保证填表时不会越界

根据状态方程我们看出0和1可能会越界,所以我们需要单独填0/1的位置,0的位置就是一个字符,那它如果是1<=a<=9的化就是合法的,dp[0]:表示的是以0位置为结尾,总的解码方法

1可以自己画图理解以下

填表顺序:

从左往右

返回值:

dp[n-1] 

代码编写

 细节问题:

有没有发现我们的初始化很繁琐

这里介绍处理边界问题和初始化的技巧:

如果觉得初始化0和1的位置很繁琐,那就多开一个空间,让0的位置没用

但注意:要保证后面的填表是正确的,比如你填2位置的时候,2是进入循环填的,如果你一开始0的位置初始化为0,2的填表就可能出错,dp[2]=dp[1]+dp[0];这时候即使你组合和单独都解码成功,2都会填成1;所以我们要注意一开始0的位置要初始化为1才能保证后面填表正确

要注意下标的映射关系,dp[i-1]=s[i];找解码方式的时候要注意dp和s下标映射关系

相关文章:

  • 博客打卡-人类基因序列功能问题动态规划
  • GESP2024年6月认证C++八级( 第二部分判断题(1-5))
  • 【现代深度学习技术】现代循环神经网络02:长短期记忆网络(LSTM)
  • GAMES202-高质量实时渲染(Real-time Environment Mapping)
  • Matlab/Simulink - BLDC直流无刷电机仿真基础教程(四) - PWM调制模拟
  • Spring AOP---面向切面编程由认识到使用
  • 自动化实现web端Google SignUp——selenium
  • 深入解析 Python 应用日志监控:ELK、Graylog 的实战指南
  • ​​​​​​​2025年第二十二届五一数学建模竞赛题目A题 支路车流量推测问题
  • 例数据中关键指标对应的SQL查询模板
  • 深度探索DeepSeek:从架构设计到性能优化的实战指南
  • 优雅关闭服务:深入理解 SIGINT / SIGTERM 信号处理机制
  • 装饰器模式深度解析:让对象功能扩展像乐高一样灵活 [特殊字符]
  • 0基础 | Proteus电路仿真 | 电机使用
  • 海量数据存储与分析:HBase vs ClickHouse vs Doris 三大数据库优劣对比指南
  • 《社交类应用开发:React Native与Flutter的抉择》
  • 【C语言】文本操作函数fseek、ftell、rewind
  • 装饰器设计模式(Decorator Pattern)详解
  • (A题|支路车流量推测问题)2025年第二十二届五一数学建模竞赛(五一杯/五一赛)解题思路|完整代码论文集合
  • Ubuntu18 登录界面死循环 Ubuntu进不了桌面
  • 全国人大常委会关于授权国务院在中国(新疆)自由贸易试验区暂时调整适用《中华人民共和国种子法》有关规定的决定
  • 视频丨中国海警位中国黄岩岛领海及周边区域执法巡查
  • 央行4月开展12000亿元买断式逆回购操作
  • 圆桌|如何应对特朗普政府的关税霸凌?一种联合国视角的思考
  • 解读|特朗普“助攻”下加拿大自由党“惨胜”,卡尼仍需克服“特鲁多阴影”
  • 习近平对辽宁辽阳市白塔区一饭店火灾事故作出重要指示