EOJ 2991 鞍点 C++

写在前面:

在高铁上无skr做,只能刷题解闷,,

虽然早上五点半就起了,但还是低估了在路上的时间,而且也低估了车站里的人流量,导致距离发车还有十分钟的时候我还在排队取票,然后只能豁出老脸走到队首问那个老哥我可不可以先取票,然后成功取票在发车前三分钟苟上了车【捂脸

回到正题,这道题和我很合(也可能是因为太简单?),一遍AC~

题目:

  1. 鞍点

单点时限: 2.0 sec
内存限制: 256 MB

寻找矩阵中的鞍点:在矩阵中可能有这样一个数字,它在自己的行中是最大的,但是在自己所处的列中又是最小的,我们把这样的元素称为鞍点。一个矩阵中可能没有鞍点,也可能有多个鞍点。输入一个 5×5 的矩阵,寻找该矩阵中的所有鞍点并按照它们在矩阵中的位置(行,列)输出。

输入格式
第 1 行:一个整数 T (1≤T≤10) 为问题数。

接下来共 5×T 行整数,其中每组测试数据有 5 行,分别是该矩阵的 5 行元素。

每行 5 个整数,整数之间由空格分开。(每个元素为 1 -100 之间的整数。)

输出格式
对于每个问题,输出一行问题的编号(0 开始编号,格式:case #0: 等)。

然后每一行输出由一个空格分隔的两个整数,表示一个鞍点所在的行号和列号(行号、列号从 0 开始计数)。如有两个以上鞍点,按照行号由小到大排列;行号相同时,按照列号由小到大排序。如没有鞍点,则输出一行-1 -1。

样例

input
3
4 3 6 5 8
2 1 7 6 7
1 2 5 3 4
4 3 8 9 10
1 1 9 8 2
1 6 7 8 1
1 9 1 1 9
1 1 1 7 1
1 23 1 1 1
1 1 1 24 1
10 20 11 8 9
1 20 12 11 10
3 30 15 21 21
8 20 20 3 12
9 50 52 70 61
output
case #0:
2 2
case #1:
-1 -1
case #2:
0 1
1 1
3 1

思路:

每个case中:

  • 一个二维数组存矩阵;
  • 两个一维数组分别存每行的最大值和每列的最小值;
  • 一个布尔变量flag代表有无鞍点(初始化为false)

如果某行最大值==某列的最小值,则存在鞍点,则令flag=true,并输出该行行标、该列列标。

若没有鞍点,则循环结束后的flag==false,则输出 -1 -1。

代码:

#include<iostream>
#include<stdio.h>
using namespace std;

int main<
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值