LeetCode 650. 2 Keys Keyboard--动态规划
来源:互联网 发布:索尼卖大楼知乎 编辑:程序博客网 时间:2024/05/20 04:14
题目链接
650. 2 Keys Keyboard
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: 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'.
解:
dp[i]表示得到i个'A'需要的最少step数,dp[1] = 0,对于dp[i],他可以由每个能整除i的数j(j > 1),通过对dp[i/j]做1次Copy All和j-1次Paste得到,而其中能使step最少的一定是所有j中最小的,比如我们想得到dp[24],
如果通过dp[2],step总数是2+12 = 14,
如果通过dp[3],step总数是3+8 = 11,
如果通过dp[4],step总数则4+6 = 10,
如果通过dp[6],step总数是5+4 = 9,
如果通过dp[8],step总数是6+3 = 9,
如果通过dp[12],step总数是7+2 = 9,
为了减少复杂度,遍历j的范围可以缩小到[2,n/2],代码:
class Solution {public: int minSteps(int n) { int *dp = new int[n+1]; if (n == 1) return 0; for (int i = 2; i <= n; i++) { dp[i] = i; for (int j = 2; j < n/2+1; j++) { if (i % j == 0 && (dp[i/j]+j) < dp[i]) { dp[i] = dp[i/j]+j; break; } } } return dp[n]; }};
阅读全文
0 0
- LeetCode 650. 2 Keys Keyboard--动态规划
- 动态规划-650. 2 Keys Keyboard
- 动态规划中级教程。 650. 2 Keys Keyboard
- leetcode 650. 2 Keys Keyboard
- LeetCode -- 650. 2 Keys Keyboard
- Leetcode 650. 2 Keys Keyboard
- [LeetCode] 650. 2 Keys Keyboard
- leetcode 650. 2 Keys Keyboard
- [LeetCode] 650. 2 Keys Keyboard
- Leetcode: 650. 2 Keys Keyboard
- [LeetCode] 650. 2 Keys Keyboard
- LeetCode-2 Keys Keyboard
- LeetCode:2 Keys Keyboard
- leetcode 650. 2 Keys Keyboard(dp)
- [LeetCode] 650. 2 Keys Keyboard ## 题目描述
- 650. 2 Keys Keyboard
- 650. 2 Keys Keyboard
- 650. 2 Keys Keyboard
- LeetCode 第一题解法
- 可视化信息论(译)
- SSM整合--新人快速搭建项目环境
- noi 2014 动物园 kmp
- Activity的四种启动模式
- LeetCode 650. 2 Keys Keyboard--动态规划
- Android中获取View的宽/高的时机
- 求二进制中1的个数扩展至n进制
- 第一章课后习题
- java内部类重点记录
- 微信公众号支付开发总结
- SQLSTATE[HY000] [1130] Host '139.129.142.19' is not allowed to connect to this MySQL server 的解决办法
- MIPS64寄存器与指令集
- Android USB HID bulkTransfer()参数解析