林惜城


私信TA

用户名:reminder

访问量:31284

签 名:

等  级
排  名 91
经  验 9070
参赛次数 0
文章发表 95
年  龄 0
在职情况 学生
学  校 西安电子科技大学
专  业

  自我简介:

哈姆


解题思路:

(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 人评分

  评论区

#include<stdio.h>
int main()
{
	int i,j;
	int x[100][100];
	int max=0;
	int line,column;
	int n;
	scanf("%d",&n);
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=n;j++)
		{
			scanf("%d",&x[i][j]);
		}
	}
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=n;j++)
		{
			if(x[i][j]>max)
			{
				max=x[i][j];
				line=i;
				column=j;
			}
		}
	}
	printf("%d %d %d\n",max,line,column);
	return 0;
}
2024-03-12 00:50:33
这不是繁琐的问题,
本来初学者就不容易,
你还来个维度空间的知识,
无疑是增添负担,
让人觉得你有显摆的成分!!!
2022-11-17 15:50:16
  • «
  • 1
  • »