关于数组的一个小问题。。。
找一个二维数组中的鞍点,即在该位置上的元素在该行最大,该列最小,也可能没有鞍点。我写了一个,但老是输不出正确结果,请大家看看问题在哪里,怎么改。。。。
#include<stdio.h>
int main()
{
int a[3][4];
int i,j,x,y,t,s,sum=0;
printf("请依次输入十二个数字:");
for(i=0;i<3;i++)
for(j=0;j<4;j++)
{
scanf("%d",&a[i][j]);
}
for(i=0;i<3;i++)
{
t=a[i][0];
y=0;
for(j=0;j<4;j++) //找出某行最大值
if(t<a[i][j]) y=j;
t=a[i][y];
s=i;
for(x=0;x<3;x++) //判断某行的最大值在某列是不是最小
{
if(t>a[x][y])break;
}
if(x==3) //如果是,输出位置
{
printf("%d,%d",s,y);
sum++;
}
}
if(sum=0) printf("该数组无鞍点");
return(0);
}
[解决办法]
for(j=0;j<4;j++) //找出某行最大值 if(t<a[i][j]){ y=j; t=a[i][y]; s=i;}
[解决办法]
#include<stdio.h>
int main()
{
int a[3][4];
int i,j,x,y,t,s,sum=0;
printf("请依次输入十二个数字:\n");
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
scanf("%d",&a[i][j]);
}
}
for(i=0;i<3;i++)
{
t=a[i][0];
y=0;
for(j=0;j<4;j++) //找出某行最大值
{
if(t<a[i][j])
y=j;
t=a[i][y];
s=i;
}
for(x=0;x<3;x++) //判断某行的最大值在某列是不是最小
{
if(t>a[x][y])
break;
}
if(x==3) //如果是,输出位置
{
printf("鞍点所在位置:第%d行,第%d列,鞍点值为:%d\n",s+1,y+1,t);
sum++;
}
}
if(sum=0)
printf("该数组无鞍点\n");
return(0);
}