Я борюсь с моим алгоритмом, чтобы найти самые низкие значения в матрице C ++ - PullRequest
1 голос
/ 28 октября 2019

В моей программе я пытаюсь найти самые низкие значения в строке матрицы, а затем найти самое низкое значение в следующей строке, соответствующей столбцу, в котором он был найден.

Я написал функцию, которая выполняет большую часть этой работы, однако я запутался в алгоритме:

Объявите и определите функцию, которая вычисляет индекс, где самые низкие (ненулевые) значениянаходятся в данной строке.

Требуется три параметра;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))    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...