В моей программе я пытаюсь найти самые низкие значения в строке матрицы, а затем найти самое низкое значение в следующей строке, соответствующей столбцу, в котором он был найден.
Я написал функцию, которая выполняет большую часть этой работы, однако я запутался в алгоритме:
Объявите и определите функцию, которая вычисляет индекс, где самые низкие (ненулевые) значениянаходятся в данной строке.
Требуется три параметра;2D-массив, объявленный в основной функции, которая является матрицей, 1D-массив, который содержит список всех посещенных строк и целое число, представляющее строку в 2D-массиве.
Для каждого из столбцов встрока, вычисляет самое низкое ненулевое значение, только если эта строка не была посещена ранее.
Я заблудился о том, как перейти к следующей строке столбца с наименьшим значением
int const SIZE = 10;
int lowest_level(int array_2D[][SIZE], int path[], int row /* current row*/)
{
for (int i = 0; i < SIZE; ++i)
{
int minValue = array_2D[i][0]; // sets min value every row
for(int j = 0; j < SIZE; ++j)
{
if (path_checker(path, row) == false) // if row was not
visited
{
if ((array_2D[i][j] < minValue) && array_2D[i][j] != 0) // if
value is less than min & value is not 0
{
minValue = array_2D[i][j];
//cout << minValue << " "; // for testing; crashes
}
else
{
break;
}
}
}
}
//return (minValue);
}
Я ожидаю что-то подобное
A B C D E F G H I J
-----------------------------------------------
A | 00 08 15 01 10 05 19 19 03 05
B | 06 00 02 08 02 12 16 03 08 17
C | 12 05 00 14 13 03 02 17 19 16
D | 08 07 12 00 10 13 08 20 16 15
E | 04 12 03 14 00 05 02 12 14 09
F | 08 05 03 18 18 00 04 02 10 19
G | 17 16 11 03 09 07 00 03 05 09
H | 07 06 11 10 11 11 07 00 14 09
I | 10 04 05 15 17 01 07 17 00 09
J | 05 20 07 04 18 19 19 03 10 00
Path
A --> D --> B --> C --> G --> H --> J --> I --> F --> E (path by rows it takes)
1 7 2 2 3 9 10 1 18 (lowest values in each row, next value corresponding to the column (1 = coordinates (A, D))