计算鞍点

#include <iostream>

using namespace std;

int main() {

int n, m,cnt=0;

cin >> m >> n;

int a[105][105];

for (int i = 1; i <= m; i++) {

for (int j = 1; j <= n; j++) {

cin >>a[i][j];

}

}

for (int i = 1; i <= m; i++) {

int maxj=1;

for (int j = 2; j <= n; j++) {

if(a[i][j]>a[i][maxj])maxj=j;

}

int s=1;

for(int j=1;j<=m;j++)

{

if(a[j][maxj]<a[i][maxj])

{

s=0;

break;

}

}

if(s)

{printf("%d %d %d\n",i,maxj,a[i][maxj]);

cnt++;}

}

if(cnt==0)cout<<"No";

return 0;

}

  • 判断该最大值是否满足特定条件:接着定义变量s并初始化为 1,用于标记是否满足后续的条件。然后通过另一个for循环for (int j = 1; j <= m; j++)遍历二维数组的每一行(索引为j),通过if (a[j][maxj] < a[i][maxj])判断在第maxj列上,其他行(索引为j)对应位置的元素是否小于当前行(索引为i)该列的元素,如果存在小于的情况,就说明不满足条件,将s置为 0,并通过break跳出循环(因为只要发现有不满足条件的行,就无需再继续比较了)。如果经过上述比较后,s的值仍然为 1,就意味着当前行(索引为i)在其最大值所在列(索引为maxj)上的元素是整个二维数组该列元素中的最大值,满足特定条件。此时通过printf("%d %d %d\n", i, maxj, a[i][maxj]);输出当前行索引i、最大值所在列索引maxj以及该最大值a[i][maxj],并且将cnt自增 1,表示找到了一个满足条件的元素。
全部评论

相关推荐

不愿透露姓名的神秘牛友
2024-12-25 10:25
汉阳 软开 14k*14 硕士211
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务