Найдите максимальное значение и удалите эту строку в 2D массиве. C ++

0

Мне нужно работать с двумя случайными 2D-массивами. Например, это 5x10. Я могу найти максимальное значение в матрице, но я не знаю, как удалить эту строку, где это максимальное значение!

int max_ind(int masivs[x][y], int a, int b, int row[y], int rinda)
{
    max=masivs[0][0];
    for(i=0;i<a;i++)
        for(j=0;j<b;j++)
            if (masivs[i][j]>max)
                max=masivs[i][j];
    printf("%7d\n",max);
}

Есть идеи?

  • 0
    Вы ограничены массивами в стиле C? Или вы можете использовать std :: vector? vec.erase() проще «удалить» строку из вектора с помощью vec.erase() чем «удалить» строку из массива в стиле C.
  • 0
    Когда вы «удаляете строку», изменяется ли размер матрицы? Другими словами, становится ли ваша матрица 5х10 размером 4х10 (при условии, что вы цитируете размеры как строки по столбцам)?
Показать ещё 5 комментариев
Теги:
multidimensional-array

1 ответ

1
Лучший ответ

Сохраните также индекс строки, а не только максимальное значение, и после того, как циклы удаляют эту строку.

О, и будет намного проще удалить строку, если вы используете, например, std::vector (например, std::vector<std::vector<int>> masivs).


Если вы не можете использовать std::vector, вам нужно переместить оставшиеся строки и уменьшить количество строк на единицу. Это можно сделать с помощью цикла, который перемещает следующую строку в строку "max", следующую следующую строку в следующую строку и т.д.

  • 0
    Хорошо, но теперь без использования for или while , только стиль <алгоритма> C ++ 11. Давайте повеселимся! (максимальная сложность O (n * m)). 3, 2, 1, иди!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню