phanindhar1

Untitled

Dec 20th, 2017
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.68 KB | None | 0 0
  1. package com.company;
  2.  
  3.  
  4. public class Main {
  5.  
  6.     public static void main(String[] args) {
  7.         // write your code here
  8.         int[] songslist = {1, 1, 2, 2, 3, 4, 5, 6};
  9.         int travelTime = 23;
  10.         System.out.println(solve(songslist, travelTime));
  11.     }
  12.  
  13.     private static int solve(int[] input, int n) {
  14.         int dp[][] = new int[n + 1][input.length + 1];
  15.         for (int i = 0; i < input.length + 1; i++) {
  16.             dp[0][i] = 0;// max songs of i songs can be played in 0 time
  17.         }
  18.         for (int i = 0; i <= n; i++) {
  19.             dp[i][0] = 0;// 0 when list empty for any target
  20.         }
  21.         int temp = 0, case1, case2;
  22.         for (int i = 1; i < input.length + 1; i++) {
  23.             for (int j = 1; j <= n; j++) {
  24.                 temp = input[i - 1];
  25.                 case1 = 0;
  26.                 case2 = 0;
  27.                 if (temp == j)
  28.                     case1 = 1;//dp[i][j]=1 adding only if time is exact
  29.  
  30.                 if (temp < j) {
  31.                     case2 = (dp[j - temp][i - 1] == 0) ? -1 : dp[j - temp][i - 1];//adding this only there is a valid dp[j - temp][i - 1] list available
  32.                     case2++;
  33.                 }
  34.                 dp[j][i] = Math.max(case1, case2);// picking the best of two
  35.                 dp[j][i] = Math.max(dp[j][i], dp[j][i - 1]);//finding if the ignoring this song will help
  36.             }
  37.         }
  38.         printmy(dp);
  39.         return dp[n][input.length];
  40.     }
  41.  
  42.     private static void printmy(int[][] dp) {
  43.         for (int i = 0; i < dp.length; System.out.println(), i++)
  44.             for (int j = 0; j < dp[i].length; j++)
  45.                 System.out.print(dp[i][j] + " ");
  46.     }
  47. }
Add Comment
Please, Sign In to add comment