一,条件:该行最大(只有一个) 该列最小(只有一个)
二,功能:输入一个任意二维数组,输出鞍点或者输出鞍点不存在
三,思路:
以2*2的数组为例
(1,1) | (1,2) |
(2,1) | (2,2) |
1.对行进行检查 记录下最大的元素
2.对最大元素所在的列进行检查 判断最小元素是否是它
3.输出结果
#define N 3 //N维数组
int main()
{
int i,j,k,s[N][N],a,b,t,sign=1; //i,j,k与数组相关的循环变量 a,b用来存储元素位置
printf("按行输入数组");
for(i=0;i<N;i++) /*
{
for(j=0;j<N;j++)
{
scanf("%d",&s[i][j]); 输入数组
}
} */
for(i=0;i<N;i++)
{
t=s[i][0];
sign=0;
a=i; //检查行最大
b=0;
for(j=1;j<N;j++)
{
if(t<s[i][j]) {b=j;t=s[i][j];}
else if(t==s[i][j]) {sign=1;}
}
for(k=0;sign==0&&k<N;k++)
{
if(k==a)continue;
else if(t>=s[k][b]) sign=1; //检查列最小
}
if(sign==0) printf(" 鞍点:(%d,%d) %d\n",a+1,b+1,s[a][b]);
}
if(sign!=0)
printf("无鞍点");
system("pause");
return 0;
}
PS:初学小白一枚,如果有错请大家赐教,谢谢(ノ ̄▽ ̄)