Maximum Tip Calculator Java
- Get link
- X
- Other Apps
PROGRAM TO CALCULATE THE MAXIMUM TIP
import java.io.*;import java.util.HashMap;class GFG { // Function that finds the maximum tips // from the given arrays as per the // given conditions static int maximumTip(int[] arr1, int[] arr2, int n, int x, int y, HashMap<String, Integer> dd) { // Create key of N, X, Y String key = Integer.toString(n) + "_" + Integer.toString(x) + "_" + Integer.toString(y); // Return if the current state is // already calculated if (dd.get(key) != null) return dd.get(key); // Base Condition if (n == 0) return 0; // If both have non-zero count then store and // return max element from both array if (x != 0 && y != 0) { int temp = Math.max( arr1[n - 1] + maximumTip(arr1, arr2, n - 1, x - 1, y, dd), arr2[n - 1] + maximumTip(arr1, arr2, n - 1, x, y - 1, dd)); dd.put(key, temp); // Return the current state result return dd.get(key); } // if y is zero, only x value // can be used if (y == 0) { int temp = arr1[n - 1] + maximumTip(arr1, arr2, n - 1, x - 1, y, dd); dd.put(key, temp); // Return the current state result return dd.get(key); } // if x is zero, only y value // can be used else { int temp = arr2[n - 1] + maximumTip(arr1, arr2, n - 1, x, y - 1, dd); dd.put(key, temp); // Return the current state result return dd.get(key); } } // Driver Code public static void main(String[] args) { int N = 5; int X = 3; int Y = 3; int A[] = { 1, 2, 3, 4, 5 }; int B[] = { 5, 4, 3, 2, 1 }; // Stores the results of the // overlapping state HashMap<String, Integer> dd = new HashMap<String, Integer>(); // Function Call System.out.println(maximumTip(A, B, N, X, Y, dd)); }}
OUTPUT:
21
- Get link
- X
- Other Apps
Comments
Post a Comment