二维数组找鞍点

本文介绍了一个编程问题,要求在给定的二维整数数组中找到所有鞍点,即行中最大且列中最小的元素。如果不存在鞍点,则输出“NO”。代码展示了如何使用两个嵌套循环来分别计算行最大值和列最小值,然后检查元素是否同时满足这两个条件。
摘要由CSDN通过智能技术生成

找出一个二维数组中的所有鞍点,即该位置上的元素在该行中最大但是在该列中最小。需要注意有可能鞍点不存在,此时需要输出“NO”。


【输入形式】

第一行有2个正整数n和m,表示二维数组的高度和宽度,保证n和m均不超过50。
之后的n行每行有m个用空格隔开的整数,表示二维数组对应位置的值。


【输出形式】

当鞍点存在时,将每个鞍点的信息在一行内输出,输出三个用空格隔开的整数,分别为鞍点元素的值以及其所在的行号和列号,有多个鞍点时,按照元素读入的顺序进行输出。当鞍点不存在时,在一行内输出“NO”。
请注意不需要输出引号,并请注意行尾输出换行。

#include<stdio.h>
int main()
{
	int n,m,i,j,sum=0;
	scanf("%d",&n);
	scanf("%d",&m);
	int a[n][m];
	for(i=0;i<n;i++)
	{
		for(j=0;j<m;j++)
		{
			scanf("%d",&a[i][j]);
		}
	}
	int max[n];
	int min[m];
	for(i=0;i<n;i++)
	{
		max[i]=a[i][0];
		for(j=0;j<m;j++)
		{
			if(a[i][j]>max[i])
			{
			max[i]=a[i][j];
			}
		}
	}
	for(j=0;j<m;j++)
	{
		min[j]=a[0][j];
		for(i=0;i<n;i++)
		{
			if(a[i][j]<min[j])
			{
			min[j]=a[i][j];
			}
		}
	}
	for(i=0;i<n;i++)
	{
		for(j=0;j<m;j++)
		{
			if(a[i][j]==max[i]&&a[i][j]==min[j])
			{
				printf("%d %d %d ",a[i][j],i,j);
                sum++;
			}
		}
	}
    if(sum==0)
    {
        printf("NO");
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值