650. 2 Keys Keyboard

来源:互联网 发布:美国队长身材 知乎 编辑:程序博客网 时间:2024/06/06 02:46

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,弄一个2维数组,分别表示屏幕上有几个A,缓存区有几个A

import java.util.Arrays;public class Solution {    public int minSteps(int n) {        if(n == 1)return 0;        int[][] dp = new int[1+n][1+n];        for(int i=0 ;i<=n; i++)        Arrays.fill(dp[i], 99999);                dp[1][1] = 1;                for(int i=2; i<=n; i++) {        int min = 99999;        for(int j=1; j<i; j++) {        dp[i][j] = Math.min(dp[i][j], dp[i-j][j]+1);        min = Math.min(min, dp[i][j]);        }        dp[i][i] = min + 1;        }                int ret = Integer.MAX_VALUE;        for(int i=0; i<=n; i++)        ret = Math.min(ret, dp[n][i]);        return ret;    }}



原创粉丝点击