Advertisement
Guest User

Untitled

a guest
Nov 28th, 2015
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.44 KB | None | 0 0
  1. public class Main {
  2.   public static final int ROW = 10;
  3.   public static final int COL = 14;
  4.   public static Matrix[][] matrix = new Matrix[ROW][COL];
  5.   public static void main(String args[])
  6.   {
  7.       //Set Let
  8.    
  9.     for(int i = 0; i < ROW; i++)
  10.         for(int j = 0; j < COL; j++)
  11.             matrix[i][j] = new Matrix();
  12.     matrix[1][3].setLet();
  13.     matrix[2][3].setLet();
  14.     for(int i = 2; i < 6; i++)
  15.         matrix[5][i].setLet();
  16.     matrix[4][9].setLet();  
  17.     matrix[4][10].setLet();
  18.     matrix[6][10].setLet();  
  19.     matrix[6][11].setLet();      
  20.     matrix[7][10].setLet();  
  21.     matrix[7][11].setLet();
  22.    
  23.     // Set Start and End
  24.     matrix[1][4].setEnd();
  25.     matrix[7][4].setStart();
  26.     matrix[7][4].setLabel();
  27.     for(int i = 0; i < COL; i++)
  28.         matrix[0][i].setLet();
  29.     for(int i = 0; i < COL; i++)
  30.         matrix[ROW-1][i].setLet();
  31.     for(int i = 0; i < ROW; i++)
  32.         matrix[i][0].setLet();
  33.     for(int i = 0; i < ROW; i++)
  34.         matrix[i][COL-1].setLet();
  35.    
  36.     int startI = 6, startJ = 3, endI = 1, endJ = 4;
  37.     //-------------------------------------------------------------------
  38.     int count  = 1;
  39.     while(!matrix[endI][endJ].getLabel() && count > 0)
  40.     {
  41.        count = 0;
  42.        for(int i = 0; i <  ROW; i++)
  43.            for(int j = 0; j < COL; j++)
  44.            {
  45.                if(matrix[i][j].getLabel() && !matrix[i][j].isLet())
  46.                {
  47.                    if(!matrix[i-1][j].getLabel() && !matrix[i-1][j].isLet())
  48.                    {
  49.                        matrix[i-1][j].setLabel();
  50.                        matrix[i-1][j].setIdentifier(matrix[i][j].getIdentifier()+1);
  51.                        count++;
  52.                    }
  53.                    if(!matrix[i+1][j].getLabel() && !matrix[i+1][j].isLet())
  54.                    {
  55.                        matrix[i+1][j].setLabel();
  56.                        matrix[i+1][j].setIdentifier(matrix[i][j].getIdentifier()+1);
  57.                        count++;
  58.                    }
  59.                    if(!matrix[i][j-1].getLabel() && !matrix[i][j-1].isLet())
  60.                    {
  61.                        matrix[i][j-1].setLabel();
  62.                        matrix[i][j-1].setIdentifier(matrix[i][j].getIdentifier()+1);
  63.                        count++;
  64.                    }
  65.                     if(!matrix[i][j+1].getLabel() && !matrix[i][j+1].isLet())
  66.                    {
  67.                        matrix[i][j+1].setLabel();
  68.                        matrix[i][j+1].setIdentifier(matrix[i][j].getIdentifier()+1);
  69.                        count++;
  70.                    }
  71.                }
  72.            }
  73.        
  74.     }
  75.     if(!matrix[endI][endJ].getLabel())
  76.         System.out.println("Путь не найден");
  77.     else{
  78.         System.out.println("Найденный путь: ");
  79.         int i1 = endI, j1 = endJ;
  80.         while(!matrix[i1][j1].isStart())
  81.         {
  82.             System.out.println(i1+" "+j1);
  83.             if(matrix[i1][j1-1].getIdentifier() == matrix[i1][j1].getIdentifier()-1 && !matrix[i1][j1-1].isLet())
  84.             {
  85.                 j1 = j1-1;
  86.             }
  87.             else
  88.             if(matrix[i1][j1+1].getIdentifier() == matrix[i1][j1].getIdentifier()-1  && !matrix[i1][j1+1].isLet())
  89.             {
  90.                 j1 += 1;
  91.             }
  92.             else
  93.             if(matrix[i1-1][j1].getIdentifier() == matrix[i1][j1].getIdentifier()-1  && !matrix[i1-1][j1].isLet())
  94.             {
  95.            
  96.                 i1 -= 1;
  97.             }
  98.             else
  99.             if(matrix[i1+1][j1].getIdentifier() == matrix[i1][j1].getIdentifier()-1  && !matrix[i1+1][j1].isLet())
  100.             {
  101.                 i1+= 1;
  102.             }
  103.         }
  104.         System.out.println();
  105.    for(int i = 1; i < ROW-1; i++)
  106.     {
  107.         for(int j = 1; j < COL-1; j++)
  108.             System.out.print(matrix[i][j].getIdentifier()+"\t ");
  109.         System.out.println();
  110.     }
  111.     }
  112.      
  113.   }
  114.    
  115. }
  116.  
  117. //===============================================================================================================================
  118.  
  119. public class Matrix {
  120.     private boolean start, end, let, label;
  121.     private int identifier;
  122.     //Setter
  123.     public void setStart()
  124.     {
  125.         start = true;
  126.     }
  127.     public void setLabel()
  128.     {
  129.         label = true;
  130.     }
  131.     public void setLet()
  132.     {
  133.         let = true;
  134.     }
  135.     public void setEnd()
  136.     {
  137.         end = true;
  138.     }
  139.     public void setIdentifier(int id)
  140.     {
  141.         identifier = id;
  142.     }
  143.     //Getter
  144.     public boolean isLet(){return let;}
  145.     public boolean isStart(){return start;}
  146.     public boolean isEnd(){return end;}
  147.     public boolean getLabel(){return label;}
  148.     public int getIdentifier(){return identifier;}
  149.     //Construct
  150.     public Matrix()
  151.     {
  152.         start = end = let = label = false;
  153.         identifier = 0;
  154.     }
  155.        
  156. }
  157. //=====================================================Result=================================================================
  158. run:
  159. Найденный путь:
  160. 1 4
  161. 1 5
  162. 1 6
  163. 2 6
  164. 3 6
  165. 4 6
  166. 5 6
  167. 6 6
  168. 6 5
  169. 6 4
  170.  
  171. 0    0   0   10  9   8   9   10  11  12  13  14  
  172. 8    9   0   9   8   7   8   9   10  11  12  13  
  173. 7    8   9   8   7   6   7   8   9   10  11  12  
  174. 6    7   8   7   6   5   6   7   0   0   10  11  
  175. 5    0   0   0   0   4   5   6   7   8   9   10  
  176. 4    3   2   1   2   3   4   5   6   0   0   11  
  177. 3    2   1   0   1   2   3   4   5   0   0   10  
  178. 4    3   2   1   2   3   4   5   6   7   8   9   
  179. СБОРКА УСПЕШНО ЗАВЕРШЕНА (общее время: 0 секунд)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement