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

Problem #7 [Medium]

This problem was asked by Facebook.

Given the mapping a = 1, b = 2, … z = 26, and an encoded message, count the number of ways it can be decoded.

For example, the message ‘111’ would give 3, since it could be decoded as ‘aaa’, ‘ka’, and ‘ak’.

You can assume that the messages are decodable. For example, ‘001’ is not allowed.

动态规划,很容易想到第一步解码字符个数的选择会影响后续的解码选择。
首先定义f[n], 即长度为n的字符串有多少种解码选择。
第二,状态转移方程。第一种情况是当前选择了一个字符,即s[i]。只要s[i]!= ‘0’, 就可以解码成A-I中的某个字母。

f[i] = f[i-1], s[i]!=‘0’

第二种情况是使用了两个字符,即s[i]和s[i+1]。只要s[i]!= ‘0’, s[i]和s[i+1]组成的整数不超过26。

f[i] = f[i-2], s[i]!='0’且10⋅s[i]+s[i+1]≤26

将上面的两种状态转移方程在对应的条件满足时进行累加,即可得到f[i]的值。
第三,初始化f[0] = 1, 即空字符串有1种解码选择,解码出一个空字符串。

#include <iostream>
#include <bits/stdc++.h>
http://www.lryc.cn/news/338440.html

相关文章:

  • MySQ数据库: MySQL数据库的安装配置 ,图文步骤详细,一篇即可完成安装完成! MySQL数据库如何与客户端连接
  • vue3+vant自动导入+pina+vite+js+pnpm搭建项目框架
  • 使用 Axios 处理 AxiosError 的三种常见方法
  • linux上安装Tomcat
  • Ubuntu20.04安装ROS过程记录以及常见报错处理
  • PaddleOCR 图片日期识别
  • HTML5学习记录
  • 提升法律文书起草效率:AlphaGPT 助力律师快速生成诉讼和仲裁文件
  • 大数据之 Hive 快速搭建的详细步骤
  • 从入门到高级的99个python知识点
  • 设计模式之备忘录模式(上)
  • 算法中二分搜索详解
  • 关于无线充电项目总结IP6826
  • [CSS]样式属性+元素设置
  • 优雅关闭jar程序shell 脚本
  • 基于51单片机多功能洗衣机控制(强洗弱洗漂洗)设计( proteus仿真+程序+设计报告+原理图+讲解视频)
  • CVP(ChatGPT、Vector Database和Prompt)
  • c语言-----数组知识汇总
  • 【游戏开发之热更新技术】
  • 小红的白色字符串
  • Python+Django+Html网页版人脸识别考勤打卡系统
  • 第1章、react基础知识;
  • 物联网会用到哪些数据开发
  • [Linux]一篇文章带你搞定软硬连接
  • AI常见关键术语
  • DataX案例,MongoDB数据导入HDFS与MySQL
  • HarmonyOS鸿蒙端云一体化开发--适合小白体制
  • Quanto: PyTorch 量化工具包
  • 宝塔面板Docker+Uwsgi+Nginx+SSL部署Django项目
  • Android 无线调试 adb connect ip:port 失败