同学们在操场上排成了一个 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;
}
}
```