650 只有兩個鍵的鍵盤

2022-08-29 00:39:15 字數 1157 閱讀 9954

最初在乙個記事本上只有乙個字元 '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] 。

這道題注意兩個字眼:

(1)恰好 n 個 'a',

(2)部分的複製是不允許的

演算法一:

解析:如果是30,那麼可以分成 310, 也就是10再黏貼2次, 而10可以分成25, 也就是5再黏貼一次,而5我們只能通過1再黏貼4次得來。因為他要求的是剛剛好等於n,而且部分複製不允許。

(1)而310也就是3個10,他需要複製黏貼的次數是1次複製2次黏貼,所以還是3次操作。

(2)而25 也就是2個5, 他需要複製黏貼的次數是1次複製1次黏貼,所以是2次操作。

(3)5是個素數,他需要複製黏貼的次數是1次複製4次黏貼, 所以是5次操作。

那麼把他們加起來,3+2+5就是10次

到了素數,他所需要的次數就是他本身

所以我們可以感覺到其實就是因式分解的過程。

學好數學很重要啊,直接上**吧:

public int minsteps(int n) 

int sum= 0;

for(int i=2; i<=n; i++)

}return sum;

}

演算法二

用動態規劃來求得

素數就只能是n種方法,偶數就是dp[n/2]+2次,奇數是他的最大約數w,dp[w]+n/w次

650 只有兩個鍵的鍵盤

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

leetcode 650 只有兩個鍵的鍵盤

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

leetcode650 只有兩個鍵的鍵盤

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