最初在乙個記事本上只有乙個字元 『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 輸出能夠...