博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode 2 Keys Keyboard
阅读量:4958 次
发布时间:2019-06-12

本文共 1428 字,大约阅读时间需要 4 分钟。

原题链接在这里:

题目:

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:

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

题解:

DP题目. 

初始化 i 从2到n赋值 i 本身,代表每次直接paste 一个'A'. i = 1时, dp[i] = 0, 本身就有一个'A'.

状态转移,对于每一个j 在(1,n)区间内 如果i%j == 0 并且dp[j] + i/j比 dp[i]小就更新dp[i]. 表示重新 Copy All, 用1次操作, 再paste (i/j-1)次. 公用i/j-1+1 = i/j次操作. j不用减到1因为最开始的dp[i]就是通过1个'A'算出来的.

答案dp[n]. 

Time Complexity: O(n^2).

Space: O(n).

AC Java:

1 class Solution { 2     public int minSteps(int n) { 3         int [] dp = new int[n+1]; 4         for(int i = 2; i<=n; i++){ 5             dp[i] = i; 6             for(int j = i-1; j>1; j--){ 7                 if(i%j == 0){ 8                     dp[i] = Math.min(dp[i], dp[j]+i/j); 9                 }10             }11         }12         return dp[n];13     }14 }

类似.

转载于:https://www.cnblogs.com/Dylan-Java-NYC/p/7574941.html

你可能感兴趣的文章
idea tomcat上传图片,无法显示的问题解决
查看>>
Java Swing学习
查看>>
HTTP缓存和CDN缓存
查看>>
HDU-1171 Big Event in HDU(生成函数/背包dp)
查看>>
Babel 是干什么的
查看>>
cocos2dx-3.0(8)------Label、LabelTTF、LabelAtlas、LabelBMFont使用之法
查看>>
Mysql数据库乱码总结
查看>>
BZOJ.3160.万径人踪灭(FFT Manacher)
查看>>
CODE[VS] 1842 递归第一次
查看>>
20180418小测
查看>>
Spring Cloud是怎么运行的?
查看>>
12 联结表
查看>>
数字三角形
查看>>
NGUI 减少drawcall规则
查看>>
xss攻击
查看>>
使用Calendar加一天,减一天
查看>>
MVC中AuthorizeAttribute用法并实现权限控制
查看>>
Broken pipe错误终极解释
查看>>
oracle数据库基本命令
查看>>
WLAN热点创建
查看>>