🎉️ 程序设计 - 操场换位置

同学们在操场上排成了一个 n行 m列的队形,请将这个队形中,身高最高的同学与身高最矮的同学交换位置(本题数据保证所有同学的身高都不相同)

比如:如下是一个 2行 3列的队形,这个队形中每个数字代表了每个同学的身高。

123 101 134
165 122 108
这个队形中,身高最高的同学在第 2行第 1列,身高最矮的同学在第 1行第 2列,将他们交换位置后输出结果为:

123 165 134
101 122 108
输入格式
第 1行有 2个整数 n和 m,分别代表队形的行和列的值( 2<= n, m<= 10)

接下来 n行,每行有 m个整数,代表每个同学的身高(每个同学的身高的值在 90 ~ 200之间)

输出格式
输出 n行 m列,代表交换位置后的结果,每行的 m个数之间用空格隔开。
输入样例
3 4
100 101 102 103
104 105 106 107
108 109 110 111
输出样例
111 101 102 103
104 105 106 107
108 109 110 100

动态二维数组,循环输入,循环找到最大最小值,记下角标,换位,输出

```c++
#include<iostream>
#include<vector>
using namespace std;
int main()
{
    int m, n, max = 0, min = 0;
    int a = 0, b = 0, c = 0, d = 0;
    cin >> n >> m;
    vector<vector<int>> array(n);
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            int x; cin >> x;
            array[i].push_back(x);
        }
    }
    max = min = array[0][0];
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            if (max < array[i][j]) { max = array[i][j]; a = i, b = j; }
            if (min > array[i][j]) { min = array[i][j]; c = i, d = j; }
        }
    }
    int temp = array[a][b];
    array[a][b] = array[c][d];
    array[c][d] = temp;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j <m; j++)
        {
            cout << array[i][j] << " ";
        }
        cout << endl;
    }
}

```