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

Ответы 1

  • Ну вот как-то так, если что-то не ясно - спрашивай. Инициализации начальных элементов нет, так что без соответствующей правки она не заработает.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;}
    • Автор:

      lefty
    • 6 лет назад
    • 0
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years