Мне нужно рассчитать минимальный путь, используя подход FUD, используя java - PullRequest
0 голосов
/ 18 апреля 2020

Мне нужно использовать подход fud (вперед, вверх, вниз), чтобы найти минимальный путь в наборе чисел.

Изображение здесь

publi c void A (строковый файл, int [] [] MAP, int col, int row) выдает IOException {

        int Forward= 0;
        int Up= 0;
        int Down= 0; 
        int min = 0;
        int minn = 0;
        int [][] path = new int[row][col];

        for (int i= 0; i < MAP.length; i++) {
            for(int j=0;j< MAP[i].length;j++){



if (i ==0){
    path[i][j]=min;

        Forward = Math.abs(Integer.valueOf(MAP[i][j])- Integer.valueOf(MAP[i][j+1]));
        Down = Math.abs(Integer.valueOf(MAP[i][j])- Integer.valueOf(MAP[i+1][j+1]));
         if (Forward==Down)
        {
            min = MAP[i][j+1];
        }
        if (Forward < Down){

            min = MAP[i][j+1];}
        if (Forward > Down)
        {

            min = MAP[i+1][j+1];}
        else {
            minn=Math.min(Forward, Down);
        }

      }

      else if ((i!=0)&&(i<(row-1)))
      {
        path[i][j]=min;
        Forward = Math.abs(Integer.valueOf(MAP[i][j])- Integer.valueOf(MAP[i][j+1]));
        Up = Math.abs(Integer.valueOf(MAP[i][j])- Integer.valueOf(MAP[i-1][j+1]));

           if (Forward == Up){

            min = MAP[i][j+1];
        } 
           if (Forward < Up){

            min = MAP[i][j+1];

        } if (Forward > Up){

            min = MAP[i-1][j+1];
        }
        else {
            minn=Math.min(Forward, Up);

        }
      }
   else if (i==(row -1)){

        path[i][j]=min; 
        Forward = Math.abs(Integer.valueOf(MAP[i][j])- Integer.valueOf(MAP[i][j+1]));
        Up = Math.abs(Integer.valueOf(MAP[i][j])- Integer.valueOf(MAP[i-1][j+1]));
        Down = Math.abs(Integer.valueOf(MAP[i][j])- Integer.valueOf(MAP[i+1][j+1]));

        if (Forward==Down)
        {
            min = MAP[i][j+1];
        }
        if (Forward == Up){

            min = MAP[i][j+1];
        }
        if (Up == Down){
            min = MAP[i+1][j+1];
        }
        if ((Forward < Up) && (Forward < Down)){
           min = MAP[i][j+1];
        }
        if ((Up< Forward) && (Up<Down)){
              min= MAP[i-1][j+1];
            }
        if ((Down< Up)&& (Down < Forward)){      
         min = MAP[i+1][j+1];
        }
        else {
            minn=Math.min(Forward, Down);
            min= Math.min(minn,Up);
        }

          System.out.println("HElL");
                    }
System.out.println("Minimum of column " + i+ " = " 
        + min); 
      path[i][j]=min;

             }
        }

      COSTofPATH_STRATA(path);
    }
    public void COSTofPATH_STRATA (int[][] path) throws IOException{

        int num = path[0][0];
        int Cost = 0;

        for (int i=0; i<path.length; i++)
       { for (int j =0; j<path.length; j++){

           int differ= Math.abs(num- path[i][j]);
                     Cost = Cost + differ;
                     num= path[i][j];
            }
       }
        System.out.println("\n");
        System.out.println("The Cost is : ");
      System.out.println(Cost);

            }

Мне нужно выяснить, как кодировать этот алгоритм, и я застрял, как я Я получаю несколько ошибок и не знаю, как рассчитать минимальный путь. Расчеты должны быть сделаны для каждой строки в столбце 0 (в качестве отправной точки). После всех расчетов следует выбрать оптимальный путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...