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

计数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.lryc.cn/news/600819.html

相关文章:

  • Redis 缓存机制详解:原理、问题与最佳实践
  • Java程序员学从0学AI(六)
  • MySQL相关概念和易错知识点(2)(表结构的操作、数据类型、约束)
  • 【LeetCode刷题指南】--队列实现栈,栈实现队列
  • MySQL 8.0 OCP 1Z0-908 题目解析(37)
  • mysql group by 多个行转换为一个字段
  • 数据结构(4)单链表算法题(上)
  • 图解网络-小林coding笔记(持续更新)
  • 期货资管软件定制开发流程
  • write`系统调用
  • 宝塔面板如何升级OpenSSL
  • 哈尔滨←→南昌的铁路要道
  • IC测试之pogo pin学习与总结-20250726
  • 鲲鹏服务器部署Kafka2.8.1
  • 微服务springcloud http客户端feign
  • 【资讯】2025年软件行业发展趋势:AI驱动变革,云原生与安全成核心
  • 【Spring Cloud】微服务学习
  • LeetCode——1717. 删除子字符串的最大得分
  • 秋招Day20 - 微服务 - 概念
  • 【机器学习深度学习】模型微调:多久才算微调完成?——如何判断微调收敛,何时终止训练
  • 二维数组相关学习
  • 大模型蒸馏(distillation)---从DeepseekR1-1.5B到Qwen-2.5-1.5B蒸馏
  • UniappDay03
  • 【Canvas与旗帜】条纹版大明三辰旗
  • AI是否会终结IT职业?深度剖析IT行业的“涌现”与重构
  • 慧星云新增大模型服务:多款大模型轻松调用
  • C++:STL中vector的使用和模拟实现
  • MySQL的底层原理--InnoDB数据页结构
  • 人大金仓 kingbase 连接数太多, 清理数据库连接数
  • 基于匿名管道的多进程任务池实现与FD泄漏解决方案