2 Keys Keyboard问题及解法
来源:互联网 发布:互联网办公室装修 知乎 编辑:程序博客网 时间:2024/06/09 16:19
问题描述:
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'.
示例:
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方法求解。其转移过程为dp[i] = dp[j] + i / j; j = n,...,1,i = 2,...,n。
过程详见代码:
class Solution {public: int minSteps(int n) { vector<int> dp(n + 1, 0);for (int i = 2; i <= n; i++){if (i % 2 == 0) dp[i] = dp[i / 2] + 2;else{int j = 3,flag = 0;for (; j <= (int)sqrt(n); j += 2){if (i % j == 0) { dp[i] = dp[i / j] + j; flag = 1; break; }}if (!flag) dp[i] = dp[1] + i;}}return dp[n]; }};
阅读全文
0 0
- 2 Keys Keyboard问题及解法
- Keyboard Row问题及解法
- 650. 2 Keys Keyboard
- 650. 2 Keys Keyboard
- 650. 2 Keys Keyboard
- 650. 2 Keys Keyboard
- 650. 2 Keys Keyboard
- 650. 2 Keys Keyboard
- LeetCode-2 Keys Keyboard
- LeetCode650. 2 Keys Keyboard
- LeetCode:2 Keys Keyboard
- LeetCode650. 2 Keys Keyboard
- 650. 2 Keys Keyboard
- 650. 2 Keys Keyboard
- 650 2 Keys Keyboard
- LeetCode: -Dynamic Programming-2 Keys Keyboard[650]-复制粘贴问题
- LeetCode 650 2 Keys Keyboard
- leetcode 650. 2 Keys Keyboard
- 配置Nginx gzip压缩功能
- 一,ESP8266下载和刷固件
- 微信下载app
- 网页JS切换中文简体/繁体
- 用flann实现K近邻查找的例子
- 2 Keys Keyboard问题及解法
- React学习之坑(一)-环境搭建
- SVM(2)-- Kernel
- 第三周项目三-体验复杂度2(汉诺塔问题)
- 主题模型学习总结
- 云监控服务使用教程详解
- 多线程
- 使用Cocoapods创建私有podspec
- 常用的20个正则表达式