慕课在二维数组找鞍点
作者:互联网
我的做法是利用二维数组先找一行的最大值在在最大值所在列里找最小值,如果最大值和最小值相同则满足鞍点定义,这个程序虽然可以通过慕课的样例但是有一个 bug就是出现
2
2 2
2 2
时并不能输出所有点希望大佬指教。
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
int a[n][n];
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
scanf("%d",&a[i][j]);
}
//输入
int judge=0,x=0;
for(int I=0;I<n;)
{
int max=a[I][x];
for(int J=x+1;J<n;J++)
{
if(a[I][J]>max)
max=a[I][J];
}
//判断一行最大
for(;max!=a[I][x]&&x<n;) x++;
//找到最大一行所在列
int min=a[0][x];
for(int o=1;o<n;o++)
{
if(a[o][x]<min) min=a[o][x];
}
//判断该最大的一列的最小
if(max==min)
{
judge=1;
printf("%d %d",I,x);
}
int judge_1=0;
if(x<n) x++;
for(int h=++x;h<n;h++)
{
if(a[I][h]==a[I][x])
judge_1=1;
}
//一行有相同最大值时
if(judge_1==0)
{
I++;
x=0;
}
}
if(judge==0) printf("NO");
}
标签:慕课,int,max,最大值,最小值,二维,鞍点 来源: https://blog.csdn.net/m0_62135536/article/details/122023504