Last active
June 13, 2023 12:33
-
-
Save linnykoleh/81693438834087f78da70574607348a5 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.HashMap; | |
import java.util.Map; | |
public class PresentRusni { | |
public static void main(String[] args) { | |
var scanner = new java.util.Scanner(System.in); | |
var x = scanner.nextInt(); | |
var y = scanner.nextInt(); | |
var z = scanner.nextInt(); | |
var w = scanner.nextInt(); | |
var presents = backtracking(0, new int[]{x, y, z}, w); | |
System.out.println(presents); | |
} | |
static Map<String, Integer> memo = new HashMap<>(); | |
private static int backtracking(int index, int[] arr, int w) { | |
if (w < 0) return 0; | |
if (w == 0) return 1; | |
var key = index + "_" + w; | |
if (memo.containsKey(key)) { | |
return memo.get(key); | |
} | |
var count = 0; | |
for (int i = index; i < arr.length; i++) { | |
w -= arr[i]; | |
count += backtracking(i, arr, w); | |
w += arr[i]; | |
} | |
memo.put(key, count); | |
return count; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment