leetCode 650 只有兩個鍵的鍵盤

2021-10-10 21:40:20 字數 877 閱讀 3172

最初在乙個記事本上只有乙個字元 『a』。你每次可以對這個記事本進行兩種操作:

copy all (複製全部) : 你可以複製這個記事本中的所有字元(部分的複製是不允許的)。

paste (貼上) : 你可以貼上你上一次複製的字元。

給定乙個數字 n 。你需要使用最少的操作次數,在記事本中列印出恰好 n 個 『a』。輸出能夠列印出 n 個 『a』 的最少操作次數。

示例 1:

輸入:

3輸出:

3解釋:

最初, 我們只有乙個字元 'a'。

第 1 步, 我們使用 copy all 操作。

第 2 步, 我們使用 paste 操作來獲得 'aa'。

第 3 步, 我們使用 paste 操作來獲得 'aaa'。

說明:

n 的取值範圍是 [1, 1000] 。

思路:狀態設定:

dp[i]表示得到i個『a』所需要的最小操作,

假設i=6,那麼我需要得到6個a的最小操作

aaaaaa可以被切分為:(c代表複製,p 代表貼上)

所以可以遍歷所有可以均分 i 的可能,然後取最小值

class

solution

}return dp[n];}

}

i劃分為j份每乙份肯定越大越好,這樣操作次數更少, 所以j從小至大如果剛好能被i整除,則當前每乙份最大,計算dp[i]後直接退出。

class

solution

}return dp[n];}

}

leetcode 650 只有兩個鍵的鍵盤

題目描述 最初在乙個記事本上只有乙個字元 a 你每次可以對這個記事本進行兩種操作 copy all 複製全部 你可以複製這個記事本中的所有字元 部分的複製是不允許的 paste 貼上 你可以貼上你上一次複製的字元。給定乙個數字n。你需要使用最少的操作次數,在記事本中列印出恰好n個 a 輸出能夠列印出...

leetcode650 只有兩個鍵的鍵盤

最初在乙個記事本上只有乙個字元 a 你每次可以對這個記事本進行兩種操作 copy all 複製全部 你可以複製這個記事本中的所有字元 部分的複製是不允許的 paste 貼上 你可以貼上你上一次複製的字元。給定乙個數字 n 你需要使用最少的操作次數,在記事本中列印出恰好 n 個 a 輸出能夠列印出 n...

leetcode 650 只有兩個鍵的鍵盤

題目描述 最初在乙個記事本上只有乙個字元 a 你每次可以對這個記事本進行兩種操作 copy all 複製全部 你可以複製這個記事本中的所有字元 部分的複製是不允許的 paste 貼上 你可以貼上你上一次複製的字元。給定乙個數字 n 你需要使用最少的操作次數,在記事本中列印出恰好 n 個 a 輸出能夠...