一本通网站1122题:计算鞍点

【题目描述】

给定一个5×5的矩阵,每行只有一个最大值,每列只有一个最小值,寻找这个矩阵的鞍点。鞍点指的是矩阵中的一个元素,它是所在行的最大值,并且是所在列的最小值。

例如:在下面的例子中(第4行第1列的元素就是鞍点,值为8 )。

c 复制代码
11 3 5 6 9
12 4 7 8 10
10 5 6 9 11
8 6 4 7 2
15 10 11 20 25

【输入】

输入包含一个5行5列的矩阵。

【输出】

如果存在鞍点,输出鞍点所在的行、列及其值,如果不存在,输出"not found"。

【输入样例】

bash 复制代码
11 3 5 6 9
12 4 7 8 10
10 5 6 9 11
8 6 4 7 2
15 10 11 20 25

【输出样例】

4 1 8

cpp 复制代码
#include<iostream>
using namespace std;
#include<string>
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(nullptr); cout.tie(nullptr);
	//创建二维数组并输入数据
	int** arr = new int* [5];
	bool flag;
	for (int i = 0; i < 5; i++)
	{
		arr[i] = new int[5];
	}
	for (int i = 0; i < 5; i++)
	{
		for (int j = 0; j < 5; j++)
		{
			cin >> arr[i][j];
		}
	}
	for (int i = 0; i < 5; i++)
	{
		int max_num = arr[i][0];
		int k = 0;
		//遍历行,找出最大值及其列号
		for (int j = 0; j < 5; j++)
		{
			if (arr[i][j] > max_num) {
				max_num = arr[i][j];
				k = j;
			}
		}
		flag = true;
		//遍历列,判断该最大值是否为该列最小值
		for (int j = 0; j < 5; j++)
		{
			if (j == i) {
				continue;
			}
			if (arr[j][k] < arr[i][k]) {
				flag = false;
			}
		}
		//如果是则输出该鞍点的位置及值并结束程序
		if (flag)
		{
			cout << i + 1 << " " << k + 1 << " " << arr[i][k];
			break;
		}
	}
	//如果没有鞍点则输出"not found"
	if (!flag) {
		cout << "not found" << endl;
	}
}

题目大概的思路就是遍历每一行,找到这一行的最大值,然后记录所在的列,然后固定列,再去判断是不是这一列的最小值,然后用一个flag进行标记,最后也可以通过flag判断是否找到,如果没找到就输出not found。

我犯了两个错误:

  1. 在找最大值的时候,只顾着更新k,没有更新max_num,那么这个值就不一定是这一行的最大值
  2. 忘了判断在没有找到的时候打印not found。有时候还是需要多读几遍题目。不要漏掉了条件。
相关推荐
im_AMBER2 小时前
Leetcode 47
数据结构·c++·笔记·学习·算法·leetcode
HLJ洛神千羽2 小时前
C++程序设计实验(黑龙江大学)
开发语言·c++·软件工程
滨HI03 小时前
C++ opencv拟合直线
开发语言·c++·opencv
艾莉丝努力练剑3 小时前
【C++:红黑树】深入理解红黑树的平衡之道:从原理、变色、旋转到完整实现代码
大数据·开发语言·c++·人工智能·红黑树
No0d1es3 小时前
电子学会青少年软件编程(C/C++)1级等级考试真题试卷(2025年9月)
java·c语言·c++·青少年编程·电子学会·真题·一级
_OP_CHEN4 小时前
C++进阶:(七)红黑树深度解析与 C++ 实现
开发语言·数据结构·c++·stl·红黑树·红黑树的旋转·红黑树的平衡调整
希露菲叶特格雷拉特4 小时前
PyTorch深度学习笔记(二十)(模型验证测试)
人工智能·pytorch·笔记
kyle~4 小时前
计算机系统---USB的四种传输方式
运维·c++·计算机系统
小龙报4 小时前
《算法通关指南数据结构和算法篇(4)--- 队列和queue》
c语言·开发语言·数据结构·c++·创业创新·学习方法·visual studio