求鞍点

 

#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;
}

posted @ 2012-04-11 22:50  加拿大小哥哥  阅读(756)  评论(0编辑  收藏  举报