Мне нужно использовать подход 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 (в качестве отправной точки). После всех расчетов следует выбрать оптимальный путь.