C++ Дана матрица N × M. Переставляя ее строки и столбцы, переместить наибольший элемент в верхний левый угол. Определить можно ли таким же образом поместить минимальный элемент в нижний правый угол.

C++ Дана матрица N × M. Переставляя ее строки и столбцы, переместить наибольший элемент в верхний левый угол. Определить можно ли таким же образом поместить минимальный элемент в нижний правый угол.
Гость
Ответ(ы) на вопрос:
Гость
Ну вот как-то так, если что-то не ясно - спрашивай. Инициализации начальных элементов нет, так что без соответствующей правки она не заработает. int main() {     // Something     int a[n][m];     // Init     // Находим максимум     int im = 0, jm = 0, max = a[0][0];     for (int i = 0 ; i < n; ++i)         for (int j = 0; j < m; ++j)             if (a[i][j] > max) {                 max = a[i][j];                 im = i;                 jm = j;             }     // Двигаем максимум вниз     swapCollumn(a, n, m, im, n-1);     swapRow(a, n, m, jm, m-1); } //Премещаем 2 столбца местами void swapCollumn(int ** a, int n, int m, int c1, int c2) {     if (c1 < 0 || c2 < 0 || c1 >= n || c2 >= n)         return;     for (int i = 0; i < m; ++i)         swap(&a[c1][i], &a[c2][i]); } //Перемещаем 2 строки местами void swapRow(int ** a, int n, int m, int r1, int r2) {     if (r1 < 0 || r2 < 0 || r1 >= m || r2 >= m)         return;     for (int i = 0; i < n; ++i)         swap(&a[i][r1], &a[i][r2]); } void swap(int * el1, int el2) {     int t = *el1;     *el1 = *el2;     *el2 = *el1; }
Не нашли ответ?
Ответить на вопрос
Похожие вопросы