pat 至多刪三個字元(簡單DP)

2021-09-29 21:50:35 字數 935 閱讀 1789

題目鏈結

題意:給定乙個全部由小寫英文本母組成的字串,允許你至多刪掉其中 3 個字元,結果可能有多少種不同的字串?

思路::dp問題:找是否有重疊問題,明確遞推關係,怎麼推的(順序千萬不要搞錯),找到狀態方程,迴圈時注意邊界條件和方程式是否嚴格成立。

重疊問題:刪除至多 3 個字元

遞推關係:dp[i][j]  表示前i個字元刪掉j個字元結果有dp[i][j]種。

d[i][j+1]+=d[i-1][j](刪除第i個字元)

d[i][j]+=d[i-1][j](不刪除第i個字元)

如果只是這樣轉移肯定會有重複的。例如乙個字串cdabnaxy,你刪除abn和刪除bna後得到的字串都是cdaxy。

這時候就要去重了,根據上面那個栗子可以發現對於乙個字元s[i],如果在i之前存在乙個x使得s[x]=s[i],那麼刪除[x,i-1]間的字元 和刪除[x+1,i]間的字元其實是重複的,可以自己模擬一下過程。

那麼d[i][j]就要減去這個重複,這個重複可表示為:d[x-1][j-(i-x)]

d[x-1][j-(i-x)]如何得來的,可以看下圖進行理解:

至多刪三個字元

l3 020 至多刪三個字元 30 分 給定乙個全部由小寫英文本母組成的字串,允許你至多刪掉其中 3 個字元,結果可能有多少種不同的字串?輸入在一行中給出全部由小寫英文本母組成的 長度在區間 4,10 6 內的字串。在一行中輸出至多刪掉其中 3 個字元後不同字串的個數。ababcc25刪掉 0 個字...

2018CCCC L3 2 至多刪三個字元(DP)

l3 2 至多刪三個字元 30 分 給定乙個全部由小寫英文本母組成的字串,允許你至多刪掉其中 3 個字元,結果可能有多少種不同的字串?輸入在一行中給出全部由小寫英文本母組成的 長度在區間 4,10 6 內的字串。在一行中輸出至多刪掉其中 3 個字元後不同字串的個數。ababcc25 刪掉 0 個字元...

L3 2 至多刪三個字元

主要思路 dp i j 表示在前i個字元中刪除j個字元是字串種類數,則dp i j 分為兩種情況刪除第i個字元,不刪除第i個字元 dp i 1 j 刪除第i個字元 dp i 1 j 1 所以dp i j dp i 1 j dp i 1 j 1 然後再考慮重複情況,以樣例舉例ababcc刪除第1,2個...