650. 2 Keys Keyboard

来源:互联网 发布:电视直播软件清晰度 编辑:程序博客网 时间:2024/06/06 01:33

Initially on a notepad only one character ‘A’ is present. You can perform two operations on this notepad for each step:

  1. Copy All: You can copy all the characters present on the notepad (partial copy is not allowed).
  2. Paste: You can paste the characters which are copied last time.

Given a number n. You have to get exactly n ‘A’ on the notepad by performing the minimum number of steps permitted. Output the minimum number of steps to get n ‘A’.

Example 1:

Input: 3Output: 3Explanation:Intitally, we have one character 'A'.In step 1, we use Copy All operation.In step 2, we use Paste operation to get 'AA'.In step 3, we use Paste operation to get 'AAA'.

Note:
The n will be in the range [1, 1000].

思路:如果知道了 i 的结果,那么2 * i的步骤只需在 i的结果上加上2即可,一次复制,一次粘贴。同理3 * i的结果为一次复制,2次粘贴;

int minSteps(int n) {    vector<int> dp(n + 1, INT_MAX);    dp[1] = 0;    for (int i = 1; i <= n; i++){        int k = 2;        for (int j = i * 2; j <= n; j += i){            dp[j] = min(dp[j], dp[i] + k);            k++;        }    }    return dp[n];}
原创粉丝点击