Задача, стоящая перед нами, состоит в том, чтобы найти минимальную стоимость матрицы, используя метод прямого движения вверх-вниз ie. например, у нас есть матрица 3x3:
r / c 0 1 2
0 4 9 6
1 1 2 9
2 7 5 3
По сути, мы берем среднюю точку к востоку от вышеуказанной матрицы, равную 1. Оттуда выбираем первое значение столбца 1 [0,1] и сравниваем его с остальными значениями во всем В столбце, чтобы определить, является ли это наименьшим значением, равным 2, оттуда с использованием метода прямого-восходящего-нисходящего, мы можем двигаться только от 2 [1,1] до 6 [0,2] (вверх) или 9 [1,2] ( вперед) или 3 [2,2] (вниз), и мы должны выбрать самый низкий, который в этом случае равен 3 [2,2], и сделать то же самое для средней точки на запад, чтобы найти минимальный путь. Это то, что нас просят сделать в нашем задании. Наша текущая проблема с приведенным ниже кодом состоит в том, что мы продолжаем получать ошибки, когда вывод дает мне случайное одиночное число di git, которое я не могу отследить, почему в качестве одного из файлов, например, матрица 7x9 имеет 4-значные значения каждый. или arrayoutofbound выражение -1.
public void StrategyB(String file, int[][] MAP_e, int[][] MAP_w, int row, int col) throws IOException {
int min;
int mid = col / 2;
int Forward=0;
int Up=0;
int Down=0;
int position_e = 0;
int position_w = 0;
int[][] path = new int[row][col];
for (int i = 0; i < MAP_e[0].length; i++) {
min = MAP_e[i][0];
for (int j = mid; j < MAP_e.length; j++) {
path[i][j] = min;
if (Forward < min) {
position_e = MAP_e[i][j] - MAP_e[i][j + 1];
} else if (Down < min) {
position_e = MAP_e[i + 1][j + 1];
} else if (Up < min) {
position_e = MAP_e[i - 1][j + 1];
}
System.out.println("Minimum of column from mid to west" + j + "=" + position_e);
}
for (int j = mid; j < MAP_w[0].length; j--) {
min = MAP_w[0][j];
path[i][j] = min;
if (Forward < min) {
position_w = MAP_w[i][j] - MAP_w[i][j + 1];
}
else if (Down < min) {
position_w = MAP_w[i + 1][j + 1];
}
else if (Up < min) {
position_w = MAP_w[i - 1][j + 1];
}
System.out.println("Minimum of column from mid to east" + j + "=" + position_w);
MAP_e[i][j] = position_e;
MAP_w[i][j] = position_w;
}
}
costpath(MAP_e, MAP_w);
}
public void costpath(int[][] MAP_e, int[][] MAP_w) throws IOException {
int Cost_e = 0;
int Cost_w = 0;
int pathcost = 0;
for (int i = 0; i < MAP_e.length; i++) {
for (int j = 0; j < MAP_e.length; j++) {
Cost_e += MAP_e[i][j];
}
}
for (int i = 0; i < MAP_w.length; i++) {
for (int j = 0; j < MAP_w.length; j++) {
Cost_w += MAP_w[i][j];
}
}
pathcost = Cost_e + Cost_w;
System.out.println("\n");
System.out.println("The Cost is : ");
System.out.println(pathcost);
}