日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:52010
  • 待審:67
  • 小程序:12
  • 文章:1106242
  • 會員:784

664。奇怪的打印機

難度:

主題: 字符串、動態規劃

有一種奇怪的打印機,具有以下兩個特殊屬性:

打印機每次只能打印一系列相同的字符
打印機每次都可以打印從任意位置開始和結束的新字符,并且會覆蓋原來存在的字符。

給定一個字符串 s,返回打印機打印它所需的最小轉數.

示例1:

輸入: s = “aaabbb”

輸出: 2

說明: 先打印“aaa”,再打印“bbb”。

示例2:

輸入: s = “aba”

輸出: 2

說明: 先打印“aaa”,然后從字符串的第二位開始打印“b”,這將覆蓋現有的字符“a”。

限制:

1

s 由小寫英文字母組成。

解決方案:

我們可以使用動態規劃。這個想法是通過將字符串分解為子問題來最小化打印字符串所需的輪數。

這個問題可以使用動態規劃來解決。這個想法是將問題分成更小的子問題,在這些子問題中確定打印 s 的每個子字符串所需的最小圈數。我們可以利用以下觀察:

如果兩個相鄰字符相同,可以擴展之前的操作,而不是算作新操作。

動態規劃解決方案

設 dp[i][j] 為打印子串 s[i:j+1] 所需的最小圈數。

    如果 s[i] == s[j],則 dp[i][j] = dp[i][j-1] 因為最后一個字符 s[j] 可以通過前面的操作打印出來。
    否則,dp[i][j] = min(dp[i][k] + dp[k+1][j]) 對于所有 i

讓我們用 php 實現這個解決方案:664。奇怪的打印機

<?php // Test the function with the given examples
echo strangePrinter("aaabbb") . "\n"; // Output: 2
echo strangePrinter("aba") . "\n";    // Output: 2
?>

登錄后復制

解釋:

    dp數組:二維數組dp[i][j]表示打印從索引i到j的子串所需的最少轉數。

    初始化: 我們初始化 dp[i][i] = 1,因為一次可以打印單個字符。

    填寫 dp 表:

    如果 i 和 j 處的字符相同($s[$i] == $s[$j]),則從 i 到 j 的打印與從 i 到 j-1 的打印所需的輪數相同,因為 $ s[$j] 可以與 $s[$i] 同時打印。
    如果它們不同,我們嘗試通過在不同點(k)劃分字符串來找到最小匝數。

    結果: 打印整個字符串所需的最少轉數存儲在 dp[0][$n – 1] 中。

該解決方案通過考慮所有可能的分割和打印字符串的方式,有效地計算打印字符串所需的最小圈數。

聯系鏈接

如果您發現本系列有幫助,請考慮在 github 上給存儲庫 一顆星,或在您最喜歡的社交網絡上分享該帖子?。您的支持對我來說意義重大!

如果您想要更多類似的有用內容,請隨時關注我:

領英
github

分享到:
標簽:奇怪 打印機
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 52010

    網站

  • 12

    小程序

  • 1106242

    文章

  • 784

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定