日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

每日一题:1220. 统计元音字母序列的数目(Count Vowels Permutation)

發布時間:2023/12/9 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 每日一题:1220. 统计元音字母序列的数目(Count Vowels Permutation) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這題是7/4/2021英文站leetcode的每日一題, 想把自己的想法和思路記錄下來.

題目:

Given an integer?n, your task is to count how many strings of length?n?can be formed under the following rules:

  • Each character is a lower case vowel?('a',?'e',?'i',?'o',?'u')
  • Each vowel?'a'?may only be followed by an?'e'.
  • Each vowel?'e'?may only be followed by an?'a'?or an?'i'.
  • Each vowel?'i'?may not?be followed by another?'i'.
  • Each vowel?'o'?may only be followed by an?'i'?or a?'u'.
  • Each vowel?'u'?may only be followed by an?'a'.

Since the answer?may be too large,?return it modulo?10^9 + 7.

Example 1:

Input: n = 1 Output: 5 Explanation: All possible strings are: "a", "e", "i" , "o" and "u".

Example 2:

Input: n = 2 Output: 10 Explanation: All possible strings are: "ae", "ea", "ei", "ia", "ie", "io", "iu", "oi", "ou" and "ua".

Example 3:?

Input: n = 5 Output: 68

思路:

看到題我的第一個想法是用backtracking,因為之前用backtracking做過其他permutation的題.但是看到數據量(1<=n<=2*10^4)我就放棄了,用backtracking做絕對超時. 于是根據提示,我的新想法是用動態規劃去做.

重新梳理了題目之后發現需要返回的結果是總數,不是可能的permutation. 那么動態規劃確實是一個很好的方法. 一開始的思路是用一個大小是(n,6)2d的array去存儲所有可能解的數量, 每一行存儲當前長度下(1 - n) 每個原音字母的所有permutation長度,前五個列分別代表五個元音字母,第六列存儲最后的permutation總數之和。從1開始,每行每列根據array里先前的數值遞增,直到長度為n。最后返回第六列所有數值之和%(10^9+7)。想的很美,但是在實現時問題不少。 例如每個元音的可能的permutation長度其實和本身之前的permuta長度并沒有關系,每個元音生成permutation的方法也不一樣。于是我放棄了這個方法。

參考完官方的解之后,我發現我的第一步是沒錯的,可以用類似的方法去解,但是需要將每一個元音的permutation長度分開,存儲為5個長度為n的1d的array。參考官方解提供的每個元音與其他的元音序列的關系,每個元音序列的更新算式也就出來了

圖1: 每個元音序列的關系 (https://leetcode.com/problems/count-vowels-permutation/solution/)

a的可能的序列 = e,i,和u的前一個序列的總和,因為他們后面可以跟a

e的可能的序列 = a,i的前一個序列的總和,因為他們后面可以跟e

以此類推。。。

在更新完這五個permutation的array之后,將他們最后的值相加,再%10*9+7就可以得到結果了

代碼:(c++)

class Solution { public:int mod = 1000000007;int countVowelPermutation(int n) {vector<long> aCount(n,1);vector<long> eCount(n,1);vector<long> iCount(n,1);vector<long> oCount(n,1);vector<long> uCount(n,1);for (int i=1; i < n; i++){aCount[i] =(eCount[i-1]+iCount[i-1]+uCount[i-1])%mod;eCount[i] = (aCount[i-1]+iCount[i-1])%mod;iCount[i] = (eCount[i-1]+oCount[i-1])%mod;oCount[i] = (iCount[i-1])%mod;uCount[i] = (iCount[i-1]+oCount[i-1])%mod;}long res = (aCount[n-1]+eCount[n-1]+iCount[n-1]+oCount[n-1]+uCount[n-1])%mod;return (int)res;} };

結果:

總結

以上是生活随笔為你收集整理的每日一题:1220. 统计元音字母序列的数目(Count Vowels Permutation)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 午夜日韩电影 | 久久影视一区二区 | 国产欧美综合一区二区三区 | 日本欧美精品 | 夜夜春很很躁夜夜躁 | 夜夜骑夜夜操 | 婷婷伊人| 日本一区二区三区在线视频 | 日本免费在线观看 | 美女一区二区三区四区 | 国产精品久久久久久久久久久久久久久久久 | 15—16女人毛片| 快射视频在线观看 | 欧美网站免费 | 91黄版| 国产香蕉视频在线 | 亚洲天堂手机在线观看 | 一本色道久久综合亚洲 | 日本中文视频 | 久久久久国产精品无码免费看 | 香蕉a视频 | 女同调教视频 | 秋霞午夜网 | 1024亚洲 | 九九热精 | 日韩最新网址 | 精品人妻少妇一区二区三区 | 91久久网| 可以免费看的av毛片 | 99国内揄拍国内精品人妻免费 | 亚洲综合99 | 国产精品久久999 | 武侠古典av | 久久伊人影视 | 国产精品交换 | 国外av网站| 特一级黄色大片 | 国语一区 | 欧美乱淫视频 | 成人黄色在线视频 | 亚洲午夜精品久久久久久浪潮 | 婷婷综合色 | 色先锋资源网 | 欧美成人一级视频 | 女性高潮视频 | 国产精品天堂 | 小视频成人 | 亚洲v日韩v综合v精品v | 日本老小玩hd老少配 | 凹凸视频一区二区 | 日韩精选视频 | 欧美无吗| 国产三级短视频 | 黄色小网站入口 | 99av在线| 国产一级免费大片 | 日鲁鲁 | www.蜜臀| 深夜福利影院 | 久久97人妻无码一区二区三区 | 婷婷五月精品中文字幕 | 亚洲免费福利 | 日本精品视频在线 | 大香蕉精品一区 | 男人阁久久| 精品久久91 | 国产专区在线 | 国产精品 欧美 日韩 | 折磨小男生性器羞耻的故事 | 亚洲精久久 | 成人在线免费高清视频 | 久久久国产打桩机 | 538任你躁在线精品免费 | 国产女人高潮时对白 | 百合sm惩罚室羞辱调教 | 日本丰满少妇做爰爽爽 | 美女精品一区二区 | 伊人久久狼人 | 久久久久久久久网站 | 日日干日日干 | 香蕉视频日本 | 日本一本久| 精品亚洲一区二区三区四区五区 | 黄色精品一区二区 | a级黄色网址 | 日本午夜视频在线观看 | 国产毛片不卡 | 欧美国产精品一区二区三区 | 91麻豆精品视频 | www黄色网 | 不卡av免费在线观看 | 亚洲男人天堂网址 | 精品成人网 | 美女又黄又免费 | av一区二区三区在线 | 国产女人叫床高潮大片免费 | 国产黑丝91 | 天堂av在线资源 | 手机在线一区二区三区 |