求鞍点
#include<stdio.h>
int main()
{
int a[4][5],i,j,i1,j1=0,max,s=1; /*i和j是行和列的循环变量,i1和j1是
一行中横向最大值所在的行标和列标,s是鞍点是否存在的标示量*/
for(i=0;i<=3;i++)
{
for(j=0;j<=4;j++)
scanf("%d",&a[i][j]);
}
printf("输入的数组:\n");
for(i=0;i<=3;i++)
{
for(j=0;j<=4;j++)
printf("%5d",a[i][j]);
printf("\n");
}
printf("\n");
for(i=0;i<=3;i++)
{
i1=i;
max=a[i1][j1];
for(j=1;j<=4;j++)
{
if(max<a[i][j])
{
max=a[i][j];
j1=j;
}
}
for(i=0;i<=3;i++)
if(max>a[i][j1])break;
if(i>3)
{
printf("a[%d][%d]=%d\n",i1,j1,max);
s=0;
}//较好,本想求出行最大和列最小,看二者是否相等,看来是多余了
麻烦啦,只需判断行最大是否为列最小集合(行最大逐个比较该列的元素)
}
if(s)
printf("不存在鞍点.\n");
return 0;
}
作者:火星十一郎
本文版权归作者火星十一郎所有,欢迎转载和商用,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.