SCAU:1051 找矩阵中的鞍点

文章描述了一个编程问题,要求在给定的3x4数字矩阵中找到行中最大值且列中最小的数,如果没有鞍点则输出NO。给出了使用G++编写的解决方案示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1051 找矩阵中的鞍点

时间限制:1000MS  代码长度限制:10KB
提交次数:5713 通过次数:1874

题型: 编程题   语言: G++;GCC

Description

由键盘输入一个3*4(3行4列)的数字矩阵,其中任意两个数字均不相同。要求输出该数字矩阵中的鞍点(即在矩阵行中最大,列中最小的数)。
若没有鞍点,输出“NO”字样。

输入样例

87  90  110  98
70  97  210  65
99  45  120  30

输出样例

110
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int i,j,col=0,k,a[3][4];//初始认为col=0,即不满足鞍点的条件
    for(i=0;i<3;i++)//输入三行四列的数
    {
        for(j=0;j<4;j++)
        {
            scanf("%d",&a[i][j]);//注意不要忘记加&
        }
    }
    for(i=0;i<3;i++)//是外循环,三行中一行一行的找
    {
        k=0;
        for(j=1;j<4;j++)//这里的j表示列数
        {
            if(a[i][j]>a[i][k])//寻找行中的最大值,若一行中后面的数大于第一个数,就代替第一个数
            {
                k=j;//即行中最大的数为a[i][k]            
            }

        }
        col=1;//更新col的值
        for(j=0;j<3;j++)
        {
             if(a[j][k]<=a[i][k]&&j!=i)//注意这里j和i都表示行数,要弄清楚他俩的关系
             col=0;//注意这里必须要让col=0,即不能变成if(a[j][k]>a[i][k]&&j!=i);col=1;,因为col的值需要不断更新,前面col已经为1,这里就必须为0
        }
        if(col==1)//即已经满足鞍点的条件
        {
            printf("%d",a[i][k]);
            return 0;//若有鞍点则输出并结束进程
        }
    }
    printf("NO\n");//若没有鞍点,则输出NO,再结束进程
    return 0;
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zero_019

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值