SlavCodes

Untitled

Nov 9th, 2019
192
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.44 KB | None | 0 0
  1. package com.telerikacademy.oop;
  2.  
  3.  
  4. import java.util.Scanner;
  5.  
  6. public class Main {
  7.  
  8. public static void main(String[] args) {
  9. Scanner reader = new Scanner(System.in);
  10. String[] input = reader.nextLine().split(" ");
  11. int rows = Integer.parseInt(input[0]);
  12. int cols = Integer.parseInt(input[1]);
  13. String[][] myStringArr = new String[rows][cols];
  14. int startingRow=0;
  15. int startingCol=0;
  16.  
  17. for (int i = 0; i <rows ; i++) {
  18. myStringArr[i] = reader.nextLine().split(" ");
  19. }
  20. int[][] grid = new int[rows][cols];
  21. for (int i = 0; i <rows ; i++) {
  22. for (int j = 0; j <cols ; j++) {
  23. grid[i][j] = Integer.parseInt(myStringArr[i][j]);
  24. if(grid[i][j] == 0){
  25. startingRow = i;
  26. startingCol = j;
  27. grid[i][j] = -1;
  28. }
  29. }
  30. }
  31.  
  32. System.out.println(collectedCoins(grid,startingRow,startingCol));
  33. }
  34.  
  35.  
  36. public static int collectedCoins(int[][] grid,int row, int col){
  37. int coinCount = 0;
  38. if(outOfGrid(grid,row,col)){
  39. return -1;
  40. }
  41. if(grid[row][col]==0){
  42. return -1;
  43. }
  44.  
  45. if(grid[row][col] >0){
  46. grid[row][col]--;
  47. }
  48.  
  49. boolean left = outOfGrid(grid,row,col-1);
  50. boolean right = outOfGrid(grid,row,col+1);
  51. boolean up = outOfGrid(grid,row-1,col);
  52. boolean down = outOfGrid(grid,row+1,col);
  53.  
  54. if(!left && !right && !up && !down && grid[row][col-1] >= grid[row][col+1] && grid[row][col-1] >=
  55. grid[row-1][col] && grid[row][col-1] >= grid[row+1][col]){
  56. coinCount += 1 + collectedCoins(grid,row,col-1);
  57. } else if(!left && !right && !up && !down && grid[row][col+1] >= grid[row][col-1] && grid[row][col+1] >=
  58. grid[row-1][col] && grid[row][col+1] >= grid[row+1][col]){
  59. coinCount += 1 + collectedCoins(grid,row,col+1);
  60. } else if(!left && !right && !up && !down && grid[row-1][col] >= grid[row][col-1] && grid[row-1][col] >=
  61. grid[row][col+1] && grid[row-1][col] >= grid[row+1][col]){
  62. coinCount += 1 + collectedCoins(grid,row-1,col);
  63. } else if(!left && !right && !up && !down && grid[row+1][col] >= grid[row][col-1] && grid[row+1][col] >=
  64. grid[row][col+1] && grid[row+1][col] >= grid[row-1][col]){
  65. coinCount += 1 + collectedCoins(grid,row+1,col);
  66. } else if(!left && !right && !up && down && grid[row][col-1] >= grid[row][col+1] && grid[row][col-1] >=
  67. grid[row-1][col]){
  68. coinCount += 1 + collectedCoins(grid,row,col-1);
  69. } else if(!left && !right && !up && down && grid[row][col+1] >= grid[row][col-1] && grid[row][col+1] >=
  70. grid[row-1][col]){
  71. coinCount += 1 + collectedCoins(grid,row,col+1);
  72. } else if(!left && !right && !up && down && grid[row-1][col] >= grid[row][col-1] && grid[row-1][col] >=
  73. grid[row][col+1]){
  74. coinCount += 1 + collectedCoins(grid,row-1,col);
  75. } else if(!left && !right && up && !down && grid[row][col-1] >= grid[row][col+1] && grid[row][col-1] >=
  76. grid[row+1][col]){
  77. coinCount += 1 + collectedCoins(grid,row,col-1);
  78. } else if(!left && !right && up && !down && grid[row][col+1] >= grid[row][col-1] && grid[row][col+1] >=
  79. grid[row+1][col]){
  80. coinCount += 1 + collectedCoins(grid,row,col+1);
  81. } else if(!left && !right && up && !down && grid[row+1][col] >= grid[row][col-1] && grid[row+1][col] >=
  82. grid[row][col+1]){
  83. coinCount += 1 + collectedCoins(grid,row+1,col);
  84. } else if(!left && right && !up && !down && grid[row][col-1] >= grid[row-1][col] && grid[row][col-1] >=
  85. grid[row+1][col]){
  86. coinCount += 1 + collectedCoins(grid,row,col-1);
  87. } else if(!left && right && !up && !down && grid[row-1][col] >= grid[row][col-1] && grid[row-1][col] >=
  88. grid[row+1][col]){
  89. coinCount += 1 + collectedCoins(grid,row-1,col);
  90. } else if(!left && right && !up && !down && grid[row+1][col] >= grid[row][col-1] && grid[row+1][col] >=
  91. grid[row-1][col]){
  92. coinCount += 1 + collectedCoins(grid,row+1,col);
  93. } else if(left && !right && !up && !down && grid[row][col+1] >= grid[row-1][col] && grid[row][col+1] >=
  94. grid[row+1][col]){
  95. coinCount += 1 + collectedCoins(grid,row,col+1);
  96. } else if(left && !right && !up && !down && grid[row-1][col] >= grid[row][col+1] && grid[row-1][col] >=
  97. grid[row+1][col]){
  98. coinCount += 1 + collectedCoins(grid,row-1,col);
  99. } else if(left && !right && !up && !down && grid[row+1][col] >= grid[row][col+1] && grid[row+1][col] >=
  100. grid[row-1][col]){
  101. coinCount += 1 + collectedCoins(grid,row+1,col);
  102. } else if(!left && !right && up && down && grid[row][col-1] >= grid[row][col+1]){
  103. coinCount += 1 + collectedCoins(grid,row,col-1);
  104. } else if(!left && !right && up && down && grid[row][col+1] >= grid[row][col-1]){
  105. coinCount += 1 + collectedCoins(grid,row,col+1);
  106. } else if(!left && right && !up && down && grid[row][col-1] >= grid[row-1][col]){
  107. coinCount += 1 + collectedCoins(grid,row,col-1);
  108. } else if(!left && right && !up && down && grid[row-1][col] >= grid[row][col-1] ){
  109. coinCount += 1 + collectedCoins(grid,row-1,col);
  110. } else if(left && !right && !up && down && grid[row][col+1] >= grid[row-1][col]){
  111. coinCount += 1 + collectedCoins(grid,row,col+1);
  112. } else if(left && !right && !up && down && grid[row-1][col] >= grid[row][col+1]){
  113. coinCount += 1 + collectedCoins(grid,row-1,col);
  114. } else if(!left && right && up && !down && grid[row][col-1] >= grid[row+1][col]){
  115. coinCount += 1 + collectedCoins(grid,row,col-1);
  116. } else if(!left && right && up && !down && grid[row+1][col] >= grid[row][col-1]){
  117. coinCount += 1 + collectedCoins(grid,row+1,col);
  118. } else if(left && !right && up && !down && grid[row][col+1] >= grid[row+1][col]){
  119. coinCount += 1 + collectedCoins(grid,row,col+1);
  120. } else if(left && !right && up && !down && grid[row+1][col] >= grid[row][col+1]){
  121. coinCount += 1 + collectedCoins(grid,row+1,col);
  122. } else if(!left && right && up && down){
  123. coinCount += 1 + collectedCoins(grid,row,col-1);
  124. } else if(left && !right && up && down){
  125. coinCount += 1 + collectedCoins(grid,row,col+1);
  126. } else if(left && right && !up && down){
  127. coinCount += 1 + collectedCoins(grid,row-1,col);
  128. } else if(left && right && up && !down){
  129. coinCount += 1 + collectedCoins(grid,row+1,col);
  130. } else {
  131. coinCount += 1 + collectedCoins(grid,row,col-1);
  132. coinCount += 1 + collectedCoins(grid,row,col+1);
  133. coinCount += 1 + collectedCoins(grid,row-1,col);
  134. coinCount += 1 + collectedCoins(grid,row+1,col);
  135. }
  136.  
  137.  
  138. return coinCount;
  139. }
  140.  
  141.  
  142.  
  143. public static boolean outOfGrid(int[][] grid, int row, int col){
  144. if (row < 0 || col < 0 || row >= grid.length || col >= grid[0].length){
  145. return true;
  146. }
  147. return false;
  148. }
  149. }
Advertisement
Add Comment
Please, Sign In to add comment