原题链接:二级C语言-寻找矩阵最值
解题思路:
(1)题目对于输入的二维矩阵只是要求找最大值,而找最大值的方法只是在每次输入值时进行比较和更新,故本题有个偷懒的写法:不建立二维数组,只需要用 for() 或者 while() 连续输入 n * n 个数据,在循环中更新最大值就行了。
(2)本人为了严谨,建了一个 vector<vector<int>> 变量来模拟矩阵,定义了一个结构体保存下标。
注意事项:
本人填充 vector<vector<int>> 的方法是把每行的数据 push 进一个临时的 vector<int>,再把这个临时数组 push 进二维数组,但是这样感觉很繁琐,应该有更高效的做法。
参考代码:
// 题目 1069: 二级C语言-寻找矩阵最值 #include <iostream> #include <vector> using namespace std; // 用于保存最大值的行和列 struct Pos { int x; int y; }; int main() { vector<vector<int>> arr; // 建立二维数组 int maxAbs = 0; // 最大值 Pos max; // 最大值的坐标 int val = 0; // 每次输入的矩阵元素 int n = 0; // 矩阵阶数 cin >> n; for (int i = 0; i < n; ++i) { vector<int> temp; // 一维矩阵,临时保存数据 for (int j = 0; j < n; ++j) { cin >> val; temp.push_back(val); // 更新最大值及其下标 if (abs(val) > abs(maxAbs)) { maxAbs = val; max.x = i + 1; max.y = j + 1; } } arr.push_back(temp); // 把一维矩阵放进二维矩阵 } cout << maxAbs << " " << max.x << " " << max.y << endl; return 0; }
0.0分
4 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复