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

计数dp(基础)

1641. 统计字典序元音字符串的数目 - 力扣(LeetCode)

class Solution {
public:int countVowelStrings(int n) {vector<vector<int>>dp(55,vector<int>(5));for(int i=0;i<=4;i++){dp[1][i]=1;}for(int i=2;i<=n;i++){for(int j=0;j<=4;j++){dp[i][j]=0;for(int k=j;k<=4;k++){dp[i][j]+=dp[i-1][k];}}}int result=0;for(int j=0;j<=4;j++){result+=dp[n][j];}return result;}
};

定义一个dp[i][j]二维数组,i代表字符串的长度,j代表开头字母(0代表a,1代表e.......)。

初始化dp数组,字符串长度为1的组合种类每一个字母都唯一,其他dp数组初始化为0,可以由字符串长度为1的状态向后推。

状态转移方程:

                for(int k=j;k<=4;k++){dp[i][j]+=dp[i-1][k];}

因为每次字符串的长度加一后,组合种类的数量等于原来这个字母开头的种类累加上长度减一后从这个字母开始向后的每一个字母的种类数。

http://www.xdnf.cn/news/16316.html

相关文章:

  • windows安装mysql8缺少时区信息
  • 【LeetCode 热题 100】131. 分割回文串——回溯
  • mysql group by 多个行转换为一个字段
  • SSH连接失败排查与解决教程: Connection refused
  • 一款基于react-native harmonyOS 封装的【文档】文件预览查看开源库(基于Harmony 原生文件预览服务进行封装)
  • 高可用集群KEEPALIVED的详细部署
  • Spring Boot SSE实战:SseEmitter实现多客户端事件广播与心跳保活
  • 基于深度学习的食管癌右喉返神经旁淋巴结预测系统研究
  • nacos启动报错:Unable to start embedded Tomcat。
  • 基于springboot的在线农产品销售平台的设计与实现
  • 【AcWing 835题解】滑动窗口
  • MGER作业
  • 基于DataX的数据同步实战
  • Linux内核设计与实现 - 第14章 块I/O层
  • RustFS for .NET 演示项目深度解析:构建 S3 兼容的分布式存储应用
  • 【VLLM】open-webui部署模型全流程
  • Compose笔记(三十八)--CompositionLocal
  • 如何从自定义或本地仓库安装 VsCode 扩展
  • lottie 动画使用
  • JavaEE初阶第十一期:解锁多线程,从 “单车道” 到 “高速公路” 的编程升级(九)
  • Springboot+MongoDB简单使用示例
  • 哈希指针与数据结构:构建可信数字世界的基石
  • window上建立git远程仓库
  • Android 键盘
  • GCN模型的设计与训练(入门案例)
  • Rust Web框架性能对比与实战指南
  • 计算机结构-逻辑门、存储器、内存、加法器、锁存器、程序计数器
  • Aerospike与Redis深度对比:从架构到性能的全方位解析
  • npm ERR! cb() never called!
  • sssss