统计字典序元音字符串的数目-----给你一个整数 n,请返回长度为 n 、仅由元音 (a, e, i, o, u) 组成且按 字典序排列 的字符串数量。 字符串 s 按 字典序排列 需要满足:对于所

1641. 统计字典序元音字符串的数目

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

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

示例 1:

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

示例 2:

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

示例 3:

输入:n = 33
输出:66045

老实说,这道题我一开始真的不知道怎么做,甚至因为这道题我都不敢上LeetCode上做题,本来还想,先将最简单的题做了当基础巩固,然后一点一点巩固深入.结果因为这道题,所有的都是幻想-------------

而且,image-20210306202322884中等不中等不重要,重要的是解答率高达77%,所以无论如何我都得做出来.

冷静了几天,这几天正好就在学dp,学的不多,但是几乎每个dp都要找规律.

然后,然后今天就在本子上画了画,结果出来;


class Solution
{
public:
    int f[51][5];
    int countVowelStrings(int n)
    {
        memset(f, 0, sizeof f);
        for (int i = 0; i < 5; i++)//首先,对前五个初始化;
        {
            f[1][i] = 5 - i;
        }
        for (int i = 2; i <= n; i++)//
        {
            for (int j = 0; j < 5; j++)
            {
                for (int k = j; k < 5; k++)
                    f[i][j] += f[i - 1][k];
            }
        }
        return f[n][0];
    }
};

k];
}
}
return f[n][0];
}
};


此处是有规律可循,不知道是不是dp,但个人是按照dp的思路去做的;
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 1024 设计师:白松林 返回首页