C语言训练-1198-鞍点计算

本文详细解析了一种用于寻找二维数组中鞍点的算法。鞍点定义为在所在行最大且所在列最小的元素。文章通过示例输入输出,展示了算法实现过程,包括如何遍历数组、比较元素和判断鞍点条件。

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

Problem Description
找出具有m行n列二维数组Array的“鞍点”,即该位置上的元素在该行上最大,在该列上最小,其中1<=m,n<=10。同一行和同一列没有相同的数。
Input
输入数据有多行,第一行有两个数m和n,下面有m行,每行有n个数。
Output
按下列格式输出鞍点:
Array[i][j]=x
其中,x代表鞍点,i和j为鞍点所在的数组行和列下标,我们规定数组下标从0开始。
一个二维数组并不一定存在鞍点,此时请输出None。
我们保证不会出现两个鞍点的情况,比如:
3 3
1 2 3
1 2 3
3 6 8
Sample Input
3 3
1 2 3
4 5 6
7 8 9
Sample Output
Array[0][2]=3

/*首先是确定一行然后用这样的第一个数字去对比这一行里其他的数字如果符合要求计数加一,
以此类推,
然后列也是这样,最后输出时检查下计数的个数是不是等于行列数,
因为每行都有最大每列都有最小,如果和行列的数相等则代表成功可以输出。*/
#include<iostream>
using namespace std;
int main()
{
  int i,j,k,m,n;
  int d,x,b=0;
  int a[10][10];
  cin>>m>>n;
  for(i=0;i<m;i++)
    {
      for(j=0;j<n;j++)
        {
          cin>>a[i][j];
        }
    }
    for(i=0;i<m;i++)
      {
        for(j=0;j<n;j++)
          {
            d=0,x=0;
            for(k=0;k<n;k++)
            {
              if(a[i][j]>=a[i][k])
                d++;
            }
            for(k=0;k<m;k++)
            {
              if(a[i][j]<=a[k][j])
               x++;
            }
            if(d==n&&x==m)
            {
              cout<<"Array["<<i<<"]["<<j<<"]="<<a[i][j]<<endl;
              b++;
            }
          }
      }
      if(b==0)
        cout<<"None"<<endl;
        return 0;
}

这题借鉴了大佬的思路,顺着大佬的代码做的,权当是练习循环了。。。。?
大佬连接https://blog.youkuaiyun.com/ccblogger/article/details/77294367

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值