各位大侠 看看我的鞍点哪里有问题呀
发布网友
发布时间:2024-10-01 16:02
我来回答
共1个回答
热心网友
时间:2024-10-15 00:38
我只学过c++,没太读懂你的程序,但我认为你的算法有问题,比如鞍点可能在任意一行,你先前求出的max只是所有数的最大值,没法对比鞍点,应该把对比鞍点的循环放在比出本行最大值的循环里,还有对比是否是本列最小值的算法感觉上也是有问题。
这是我给改的:
int i,j,max,a,d,c,min;
max=sz[0][0];
for (i=0;i<m;i++)
{ for (j=0;j<n;j++)
{
if (sz[i][j]>max) {max=sz[i][j]; d=j; c=i;} //记录下一行最大值
}
min=max;
for (a=0;a<n;a++)
{
if(sz[a][c]<min) {min=sz[a][c]} //判断这一行最小值
}
if (max==min) printf("%d+%d",c,d);
else if (i==m-1 && max!=min) goto finish; //判断无鞍点结束
}
可能语法上有些问题吧。