Skip to content

Instantly share code, notes, and snippets.

@linnykoleh
Last active June 13, 2023 12:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save linnykoleh/81693438834087f78da70574607348a5 to your computer and use it in GitHub Desktop.
Save linnykoleh/81693438834087f78da70574607348a5 to your computer and use it in GitHub Desktop.
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