信奥赛一本通1122:计算鞍点

简介: 【题目描述】给定一个5×5的矩阵,每行只有一个最大值,每列只有一个最小值,寻找这个矩阵的鞍点。鞍点指的是矩阵中的一个元素,它是所在行的最大值,并且是所在列的最小值。例如:在下面的例子中(第4行第1列的元素就是鞍点,值为8 )。11 3 5 6 912 4 7 8 1010 5 6 9 118 6 4 7 215 10 11 20 25

【题目描述】

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

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

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

【输入】

输入包含一个55列的矩阵。

【输出】

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

【输入样例】

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

C++:
#include<iostream>
using namespace std;
int main()
{
    int a[10][10];      //二维数组来存储矩阵
    int math;            //筛选满足条件的数
    int position;         //表示该数所在列
    int judge;            //用来判断该数是否符合条件
    for(int i=1;i<=5;i++)
        for(int j=1;j<=5;j++)
            cin>>a[i][j];
    for(int i=1;i<=5;i++) 
    {
        math=a[i][1];      //这里我是先每行的最大数然后取每行的第一个数
        position=1;        //每次判断前都赋值为1因为我取的是每行第一个数也就是第一列的数
        judge=1;           //1为概述符合条件,0为不符合
        for(int j=2;j<=5;j++)  
        {
            if(math<a[i][j])    //判断每行的最大数
            { 
                math=a[i][j];
                position=j;     //把该数所在列标记下来
            }
        }
        for(int k=2;k<=5;k++)
        {
            if(math>a[k][position])      //判断该数字是否为自己所在列的最小数
                judge=0;                 //如果不是的话就将judge标记为0即不符合条件
        }
        if(judge)                    //最后根据标记来判断该数是否为鞍点
        {
            printf("%d %d %d\n",i,position,math);    //是的话就输出该数所在行、列、以及该数本身
            return 0;                                 //并且结束程序
        }
    } 
    printf("not found");                //没有一个数满足的话就输出“not found”
}


相关文章
|
9月前
|
算法
蓝桥杯vip测试题系统试题-算法提高 矩阵转置
蓝桥杯vip测试题系统试题-算法提高 矩阵转置
71 0
|
算法 Java 测试技术
LeetCode 周赛上分之旅 #46 经典二分答案与质因数分解
学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越抽象,它能覆盖的问题域就越广,理解难度也更复杂。在这个专栏里,小彭与你分享每场 LeetCode 周赛的解题报告,一起体会上分之旅。
78 0
LeetCode 周赛上分之旅 #46 经典二分答案与质因数分解
|
C语言 C++
信奥赛一本通 2035:【例5.2】平移数据
【题目描述】 将a数组中第一个元素移到数组末尾,其余数据依次往前平移一个位置。 【输入】 第一行为数组a的元素个数; 第二行为n个小于1000的正整数。 【输出】 平移后的数组元素,每个数用一个空格隔开。
568 0
|
算法 索引
从三道经典的leetcode题掌握二分法
前言 二分法是典型的搜索算法,其主要运用于有序序列中寻找目标值。其思路非常简单,就是不断比较搜索区间的中间值与目标值,当中间值等于目标值则结束搜索,如果中间值大于目标值,则继续搜索左半区间,反之搜索右半区间。 总结下,二分法就是在搜索过程中不断地将搜索区间减半,直到搜索到目标值或者搜索区间为空集。
|
算法 开发者
算法编程题目精解征文开始啦!快来Show出你的最优思路
阿里云开发者社区在线编程平台征稿活动正式启动!秀思路,赢社区周边!
算法编程题目精解征文开始啦!快来Show出你的最优思路
|
存储 人工智能 算法
信息学奥赛一本通算法(C++版)基础算法:高精度计算
高精度加法(大位相加) 1 #include 2 using namespace std; 3 int main() 4 { 5 char a1[100],b1[100]; 6 int a[100],b[100],c[100];//a,b,c分别存储加数...
1680 0
|
算法
算法系列15天速成——第三天 七大经典排序【下】
原文:算法系列15天速成——第三天 七大经典排序【下】 今天跟大家聊聊最后三种排序: 直接插入排序,希尔排序和归并排序。   直接插入排序:        这种排序其实蛮好理解的,很现实的例子就是俺们斗地主,当我们抓到一手乱牌时,我们就要按照大小梳理扑克,30秒后,    扑克梳理完毕,4条3,5条s,哇塞......  回忆一下,俺们当时是怎么梳理的。
1131 0
|
算法 索引 存储
算法系列15天速成——第四天 五大经典查找【上】
原文:算法系列15天速成——第四天 五大经典查找【上】 在我们的生活中,无处不存在着查找,比如找一下班里哪个mm最pl,猜一猜mm的芳龄....... 对的这些都是查找。   在我们的算法中,有一种叫做线性查找。
1082 0
|
算法
算法系列15天速成——第二天 七大经典排序【中】
原文:算法系列15天速成——第二天 七大经典排序【中】 首先感谢朋友们对第一篇文章的鼎力支持,感动中.......    今天说的是选择排序,包括“直接选择排序”和“堆排序”。   话说上次“冒泡排序”被快排虐了,而且“快排”赢得了内库的重用,众兄弟自然眼红,非要找快排一比高下。
995 0