Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private int[][] city;
- public RoadsInCityRecursive(int width, int height)
- {
- city = new int[width][height];
- }
- public void addBarrier(int a, int b)
- {
- city[a][b] = -1;
- }
- public long calculate(int startX, int startY, int endX, int endY)
- {
- if(startX>=city.length || startY>=city[0].length || startX<0 || startY<0
- || endX>=city.length || endY>=city[0].length || endX<0 || endY<0)
- {
- return -1;
- }
- else
- {
- printCity(startX,startY,endX,endY);
- if((startY > endY || startX < endX) || (startX == endX && startY == endY))
- {
- return -1;
- }
- else
- {
- return calculateRec(startX-1, startY,endX,endY) + calculateRec(startX, startY+1,endX,endY);
- }
- }
- }
- private long calculateRec(int startX, int startY, int endX, int endY)
- {
- if(city[startX][startY]!=-1)
- {
- if(startX == endX)
- {
- for(int i=startY; i<endY; i++)
- {
- if(city[startX][i]==-1)
- {
- return 0;
- }
- }
- return 1;
- }
- if(startY == endY)
- {
- for(int i=startX; i<endX; i--)
- {
- if(city[i][startY]==-1)
- {
- return 0;
- }
- }
- return 1;
- }
- return calculateRec(startX-1, startY,endX,endY) + calculateRec(startX, startY+1,endX,endY);
- }
- else
- {
- //Blocked path
- return 0;
- }
- }
- private void printCity(int startX, int startY, int endX, int endY)
- {
- System.out.println("Starting position: ("+startX+","+startY+")");
- System.out.println("Target position: ("+endX+","+endY+")\n");
- for (int row = 0; row < city.length; row++) {
- for (int column = 0; column < city[row].length; column++) {
- if(row==startX && column==startY)
- {
- System.out.print("START\t");
- }
- else if(row==endX && column==endY)
- {
- System.out.print("END\t");
- }
- else
- {
- System.out.print(city[row][column] + "\t");
- }
- }
- System.out.println();
- }
- System.out.println();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement