平平无奇的编程萌新
2021-12-13 19:56
采纳率: 96.7%
浏览 11

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

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

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

1条回答 默认 最新

  • cab_bage 2022-01-03 20:40
    最佳回答
    动态二维数组,循环输入,循环找到最大最小值,记下角标,换位,输出
    
    ```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;
        }
    }
    
    

    ```

    评论
    解决 无用 1
    打赏 举报 编辑记录

相关推荐 更多相似问题