Advertisement
Guest User

Untitled

a guest
Jun 19th, 2019
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.18 KB | None | 0 0
  1. class Solution {
  2. private int NUM_OF_MOVES = 0;
  3. //private Map<int[], int> cache = new HashMap<int[], int>();
  4. private int runningSum = 0;
  5.  
  6. public boolean helper(int maxChoosableInteger, int desiredTotal, int[] takens) {
  7. boolean resPlayer1 = false;
  8.  
  9. for(int i = 0; i < maxChoosableInteger-1; i++) {
  10. if (takens[i] == 1) continue;
  11. int chosenVal = i+1;
  12. takens[i] = 1;
  13. runningSum += chosenVal;
  14. if (runningSum >= desiredTotal && NUM_OF_MOVES % 2 == 0) return true;
  15. //cache.add(takens, runningSum);
  16. NUM_OF_MOVES += 1;
  17. if (NUM_OF_MOVES %2 == 0) resPlayer1 = helper(maxChoosableInteger, desiredTotal, takens);
  18. NUM_OF_MOVES -=1;
  19. takens[i] = 0;
  20. runningSum -= chosenVal;
  21. if (resPlayer1 == true) return true;
  22. }
  23. return resPlayer1;
  24. }
  25.  
  26. public boolean canIWin(int maxChoosableInteger, int desiredTotal) {
  27. int[] takens = new int[maxChoosableInteger];
  28. Arrays.fill(takens, 0);
  29. return helper(maxChoosableInteger, desiredTotal, takens);
  30.  
  31. }
  32. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement