您的位置:首页 > 其它

650. 2 Keys Keyboard

2017-08-01 20:33 141 查看
Initially on a notepad only one character ‘A’ is present. You can perform two operations on this notepad for each step:

Copy All: You can copy all the characters present on the notepad (partial copy is not allowed).

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: 3
Output: 3
Explanation:
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
;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: