Нахождение ненулевого минимума в массиве, где индекс 0 равен 0 C ++ - PullRequest
0 голосов
/ 25 октября 2019

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

int ComputeLowestPheromone(int matrix[][SIZE], int visitedColns[], int currRow)
{
    int row_min[SIZE];
    for(int i = currRow; i < SIZE; ++i)
    {
        row_min[i] = matrix[i][0];
        for(int j = 0; j < SIZE; ++j)
        {
            if(matrix[i][j] == 0)
            {
                continue;
            }

            if(row_min[i] > matrix[i][j])
            {
                row_min[i] = matrix[i][j];
            }
        }
    }

    for(int i = 0; i < SIZE; ++i)
    {
        cout  << "Row Min " << i << ": " << row_min[i] << endl;
    }
}

Токовый выход: CurrentOutput

Поэтому мой вопрос, , почему он правильно игнорирует ноль для всех строк, кромеfirst? И как только я это решу, совет о том, как правильно сохранить текущий индекс, будет потрясающим.

Ответы [ 2 ]

2 голосов
/ 25 октября 2019

Измените инициализацию с

row_min[i] = matrix[i][0];

на

row_min[i] = std::numeric_limits<int>::max();
1 голос
/ 25 октября 2019

Это назначение row_min вызывает проблему:

row_min[i] = matrix[i][0];

Вы инициализируете это, по-видимому, нулевым значением.

if(row_min[i] > matrix[i][j])
{
    row_min[i] = matrix[i][j];
}

Хотя вы обычно используете продолжает, чтобы избежать назначения 0Вы уже присвоили значение 0, и оператор if не будет выполняться. Инициализируйте row_min в row_min[i] = 0xffffffff или std::numeric_limits<int>::max(); 0xffffffff, предполагая, что 32-битное целое число.

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