鱼C论坛

 找回密码
 立即注册
查看: 1921|回复: 1

[技术交流] C++刷LeetCode(1641. 统计字典序元音字符串的数目)【动态规划】

[复制链接]
发表于 2020-12-7 14:45:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 糖逗 于 2020-12-7 21:31 编辑

题目描述:
  1. 给你一个整数 n,请返回长度为 n 、仅由元音 (a, e, i, o, u) 组成且按 字典序排列 的字符串数量。

  2. 字符串 s 按 字典序排列 需要满足:对于所有有效的 i,s[i] 在字母表中的位置总是与 s[i+1] 相同或在 s[i+1] 之前。



  3. 示例 1:

  4. 输入:n = 1
  5. 输出:5
  6. 解释:仅由元音组成的 5 个字典序字符串为 ["a","e","i","o","u"]
  7. 示例 2:

  8. 输入:n = 2
  9. 输出:15
  10. 解释:仅由元音组成的 15 个字典序字符串为
  11. ["aa","ae","ai","ao","au","ee","ei","eo","eu","ii","io","iu","oo","ou","uu"]
  12. 注意,"ea" 不是符合题意的字符串,因为 'e' 在字母表中的位置比 'a' 靠后
  13. 示例 3:

  14. 输入:n = 33
  15. 输出:66045


  16. 提示:

  17. 1 <= n <= 50
复制代码



  1. class Solution {
  2. public:
  3.     int countVowelStrings(int n) {
  4.         //动态规划
  5.         if(n == 1) return 5;
  6.         //定义dp【i】【j】是以前i个(从0开始)为结尾的,且长度为j的字符串的个数
  7.         int dp[5][n + 1];
  8.         dp[0][1] = 1, dp[1][1] = 2, dp[2][1] = 3, dp[3][1] = 4, dp[4][1] = 5;
  9.         for(int i = 0; i < 5; i++){
  10.             for(int j = 2; j <= n; j++){
  11.                 if(i == 0)dp[i][j] = dp[i][j-1];
  12.                 else{
  13.                     dp[i][j] = dp[i-1][j] + dp[i][j-1];//最后两个字符相同和不同两种情况
  14.                 }
  15.             }
  16.         }
  17.         return dp[4][n];
  18.     }
  19. };
复制代码



参考链接:https://leetcode-cn.com/problems ... n-mou-xian-de-me-w/

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-12-7 14:46:04 | 显示全部楼层
动态规划类问题一直没有找到有效的解题方法
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-8 22:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表