Advertisement
bkit4s0

[min step]

Jul 2nd, 2015
226
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 0.84 KB | None | 0 0
  1. public class type {
  2.     private static int[] memo;
  3.  
  4.     static int getMinSteps(int n) {
  5.         if (n == 1)
  6.             return 0;
  7.         if (memo[n] != -1)
  8.             return memo[n];
  9.         int r = 1 + getMinSteps(n - 1);
  10.         if (n % 2 == 0)
  11.             r = Math.min(r, 1 + getMinSteps(n / 2));
  12.         if (n % 3 == 0)
  13.             r = Math.min(r, 1 + getMinSteps(n / 3));
  14.         memo[n] = r;
  15.         return r;
  16.     }
  17.  
  18.     static int getMinStepsDP(int n) {
  19.         int[] dp = new int[n + 1];
  20.         int i;
  21.         dp[1] = 0; // trivial case
  22.         for (i = 2; i <= n; i++) {
  23.             dp[i] = 1 + dp[i - 1];
  24.             if (i % 2 == 0)
  25.                 dp[i] = Math.min(dp[i], 1 + dp[i / 2]);
  26.             if (i % 3 == 0)
  27.                 dp[i] = Math.min(dp[i], 1 + dp[i / 3]);
  28.         }
  29.         return dp[n];
  30.     }
  31.  
  32.     public static void main(String[] args) {
  33.         int n = 7;
  34.         memo = new int[n + 1];
  35.         for (int i = 0; i < n + 1; i++)
  36.             memo[i] = -1;
  37.         System.out.println(getMinStepsDP(n));
  38.     }
  39. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement