跳转至

动态矩阵(指针与堆内存分配)

时间限制: 1 Sec 内存限制: 128 MB

题目描述

未知一个整数矩阵的大小,在程序运行时才会输入矩阵的行数m和列数n

要求使用指针,结合new方法,动态创建一个二维数组,并求出该矩阵的最小值和最大值,可以使用数组下标法。

不能先创建一个超大矩阵,然后只使用矩阵的一部分空间来进行数据访问、

创建的矩阵大小必须和输入的行数m和列数n一样

输入

第一行输入t表示t个测试实例

第二行输入两个数字m和n,表示第一个矩阵的行数和列数

第三行起,连续输入m行,每行n个数字,表示输入第一个矩阵的数值

依次输入t个实例

输出

每行输出一个实例的最小值和最大值

样例输入

2
2 3
33 22 11
66 88 55
3 4
19 38 45 14
22 65 87 31
91 35 52 74

样例输出

11 88
14 91

提示

解决方案

#include <iostream>

int main() {
    size_t T;
    std::cin >> T;

    while (T--) {
        size_t row, col;
        std::cin >> row >> col;
        int **matrix = new int *[row];
        for (size_t ir = 0; ir < row; ++ir) {
            matrix[ir] = new int[col];
            for (size_t ic = 0; ic < col; ++ic) {
                std::cin >> matrix[ir][ic];
            }
        }
        int min = matrix[0][0], max = matrix[0][0];
        for (size_t ir = 0; ir < row; ++ir) {
            for (size_t ic = 0; ic < col; ++ic) {
                if (min > matrix[ir][ic]) {
                    min = matrix[ir][ic];
                }
                if (max < matrix[ir][ic]) {
                    max = matrix[ir][ic];
                }
            }
        }
        std::cout << min << ' ' << max << std::endl;
    }

    return 0;
}

评论