Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Main {
- public static final int ROW = 10;
- public static final int COL = 14;
- public static Matrix[][] matrix = new Matrix[ROW][COL];
- public static void main(String args[])
- {
- //Set Let
- for(int i = 0; i < ROW; i++)
- for(int j = 0; j < COL; j++)
- matrix[i][j] = new Matrix();
- matrix[1][3].setLet();
- matrix[2][3].setLet();
- for(int i = 2; i < 6; i++)
- matrix[5][i].setLet();
- matrix[4][9].setLet();
- matrix[4][10].setLet();
- matrix[6][10].setLet();
- matrix[6][11].setLet();
- matrix[7][10].setLet();
- matrix[7][11].setLet();
- // Set Start and End
- matrix[1][4].setEnd();
- matrix[7][4].setStart();
- matrix[7][4].setLabel();
- for(int i = 0; i < COL; i++)
- matrix[0][i].setLet();
- for(int i = 0; i < COL; i++)
- matrix[ROW-1][i].setLet();
- for(int i = 0; i < ROW; i++)
- matrix[i][0].setLet();
- for(int i = 0; i < ROW; i++)
- matrix[i][COL-1].setLet();
- int startI = 6, startJ = 3, endI = 1, endJ = 4;
- //-------------------------------------------------------------------
- int count = 1;
- while(!matrix[endI][endJ].getLabel() && count > 0)
- {
- count = 0;
- for(int i = 0; i < ROW; i++)
- for(int j = 0; j < COL; j++)
- {
- if(matrix[i][j].getLabel() && !matrix[i][j].isLet())
- {
- if(!matrix[i-1][j].getLabel() && !matrix[i-1][j].isLet())
- {
- matrix[i-1][j].setLabel();
- matrix[i-1][j].setIdentifier(matrix[i][j].getIdentifier()+1);
- count++;
- }
- if(!matrix[i+1][j].getLabel() && !matrix[i+1][j].isLet())
- {
- matrix[i+1][j].setLabel();
- matrix[i+1][j].setIdentifier(matrix[i][j].getIdentifier()+1);
- count++;
- }
- if(!matrix[i][j-1].getLabel() && !matrix[i][j-1].isLet())
- {
- matrix[i][j-1].setLabel();
- matrix[i][j-1].setIdentifier(matrix[i][j].getIdentifier()+1);
- count++;
- }
- if(!matrix[i][j+1].getLabel() && !matrix[i][j+1].isLet())
- {
- matrix[i][j+1].setLabel();
- matrix[i][j+1].setIdentifier(matrix[i][j].getIdentifier()+1);
- count++;
- }
- }
- }
- }
- if(!matrix[endI][endJ].getLabel())
- System.out.println("Путь не найден");
- else{
- System.out.println("Найденный путь: ");
- int i1 = endI, j1 = endJ;
- while(!matrix[i1][j1].isStart())
- {
- System.out.println(i1+" "+j1);
- if(matrix[i1][j1-1].getIdentifier() == matrix[i1][j1].getIdentifier()-1 && !matrix[i1][j1-1].isLet())
- {
- j1 = j1-1;
- }
- else
- if(matrix[i1][j1+1].getIdentifier() == matrix[i1][j1].getIdentifier()-1 && !matrix[i1][j1+1].isLet())
- {
- j1 += 1;
- }
- else
- if(matrix[i1-1][j1].getIdentifier() == matrix[i1][j1].getIdentifier()-1 && !matrix[i1-1][j1].isLet())
- {
- i1 -= 1;
- }
- else
- if(matrix[i1+1][j1].getIdentifier() == matrix[i1][j1].getIdentifier()-1 && !matrix[i1+1][j1].isLet())
- {
- i1+= 1;
- }
- }
- System.out.println();
- for(int i = 1; i < ROW-1; i++)
- {
- for(int j = 1; j < COL-1; j++)
- System.out.print(matrix[i][j].getIdentifier()+"\t ");
- System.out.println();
- }
- }
- }
- }
- //===============================================================================================================================
- public class Matrix {
- private boolean start, end, let, label;
- private int identifier;
- //Setter
- public void setStart()
- {
- start = true;
- }
- public void setLabel()
- {
- label = true;
- }
- public void setLet()
- {
- let = true;
- }
- public void setEnd()
- {
- end = true;
- }
- public void setIdentifier(int id)
- {
- identifier = id;
- }
- //Getter
- public boolean isLet(){return let;}
- public boolean isStart(){return start;}
- public boolean isEnd(){return end;}
- public boolean getLabel(){return label;}
- public int getIdentifier(){return identifier;}
- //Construct
- public Matrix()
- {
- start = end = let = label = false;
- identifier = 0;
- }
- }
- //=====================================================Result=================================================================
- run:
- Найденный путь:
- 1 4
- 1 5
- 1 6
- 2 6
- 3 6
- 4 6
- 5 6
- 6 6
- 6 5
- 6 4
- 0 0 0 10 9 8 9 10 11 12 13 14
- 8 9 0 9 8 7 8 9 10 11 12 13
- 7 8 9 8 7 6 7 8 9 10 11 12
- 6 7 8 7 6 5 6 7 0 0 10 11
- 5 0 0 0 0 4 5 6 7 8 9 10
- 4 3 2 1 2 3 4 5 6 0 0 11
- 3 2 1 0 1 2 3 4 5 0 0 10
- 4 3 2 1 2 3 4 5 6 7 8 9
- СБОРКА УСПЕШНО ЗАВЕРШЕНА (общее время: 0 секунд)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement