Advertisement
Guest User

vicegdestroyer

a guest
May 5th, 2016
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.03 KB | None | 0 0
  1. private int[][] city;
  2.  
  3. public RoadsInCityRecursive(int width, int height)
  4. {
  5. city = new int[width][height];
  6. }
  7.  
  8. public void addBarrier(int a, int b)
  9. {
  10. city[a][b] = -1;
  11. }
  12.  
  13. public long calculate(int startX, int startY, int endX, int endY)
  14. {
  15. if(startX>=city.length || startY>=city[0].length || startX<0 || startY<0
  16. || endX>=city.length || endY>=city[0].length || endX<0 || endY<0)
  17. {
  18. return -1;
  19. }
  20. else
  21. {
  22. printCity(startX,startY,endX,endY);
  23.  
  24. if((startY > endY || startX < endX) || (startX == endX && startY == endY))
  25. {
  26. return -1;
  27. }
  28. else
  29. {
  30. return calculateRec(startX-1, startY,endX,endY) + calculateRec(startX, startY+1,endX,endY);
  31. }
  32. }
  33.  
  34. }
  35.  
  36.  
  37. private long calculateRec(int startX, int startY, int endX, int endY)
  38. {
  39.  
  40. if(city[startX][startY]!=-1)
  41. {
  42. if(startX == endX)
  43. {
  44. for(int i=startY; i<endY; i++)
  45. {
  46. if(city[startX][i]==-1)
  47. {
  48. return 0;
  49. }
  50. }
  51. return 1;
  52. }
  53. if(startY == endY)
  54. {
  55. for(int i=startX; i<endX; i--)
  56. {
  57. if(city[i][startY]==-1)
  58. {
  59. return 0;
  60. }
  61. }
  62. return 1;
  63. }
  64.  
  65. return calculateRec(startX-1, startY,endX,endY) + calculateRec(startX, startY+1,endX,endY);
  66. }
  67. else
  68. {
  69. //Blocked path
  70. return 0;
  71. }
  72. }
  73.  
  74.  
  75. private void printCity(int startX, int startY, int endX, int endY)
  76. {
  77. System.out.println("Starting position: ("+startX+","+startY+")");
  78. System.out.println("Target position: ("+endX+","+endY+")\n");
  79.  
  80. for (int row = 0; row < city.length; row++) {
  81. for (int column = 0; column < city[row].length; column++) {
  82. if(row==startX && column==startY)
  83. {
  84. System.out.print("START\t");
  85. }
  86. else if(row==endX && column==endY)
  87. {
  88. System.out.print("END\t");
  89. }
  90. else
  91. {
  92. System.out.print(city[row][column] + "\t");
  93. }
  94. }
  95. System.out.println();
  96. }
  97. System.out.println();
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement