Мне нужно работать с двумя случайными 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);
}
Есть идеи?
Сохраните также индекс строки, а не только максимальное значение, и после того, как циклы удаляют эту строку.
О, и будет намного проще удалить строку, если вы используете, например, std::vector
(например, std::vector<std::vector<int>> masivs
).
Если вы не можете использовать std::vector
, вам нужно переместить оставшиеся строки и уменьшить количество строк на единицу. Это можно сделать с помощью цикла, который перемещает следующую строку в строку "max", следующую следующую строку в следующую строку и т.д.
for
или while
, только стиль <алгоритма> C ++ 11. Давайте повеселимся! (максимальная сложность O (n * m)). 3, 2, 1, иди!
vec.erase()
проще «удалить» строку из вектора с помощьюvec.erase()
чем «удалить» строку из массива в стиле C.