用c语言编写一个求鞍点的程序,

鞍点即在该行上最大,该列上最小。谢谢!
2025-04-29 01:41:40
推荐回答(1个)
回答1:

先找行上最大的数,再看看在列上是否最小就OK了~
参考下面代码
#include < stdio.h>
#define MAX_BUF 300
void func(int *A, int rows, int cols, int* result, int resultsize)
{
int i,j,tc,flag,cul=0;
for(i=0;i {

for(j=0,tc=0;j {
if(*(A+i*cols+j) > *(A+i*cols +tc))
tc=j;
}
flag = 1;
for(j=0;j {
if(*(A+j*cols +tc) < *(A+i*cols+tc) && i != j)
{
flag = 0;
break;
}
}
if(flag)
{
if(cul< resultsize-3)
{
result[cul]=i;
result[cul+1] = tc;
result[cul+2] = *(A+i*cols+tc);
cul += 3;
}
else
{
break;
}

}

}
result[cul] = -1;
}

int main()
{
int A[3][3]={{1,2,3},{4,5,6},{7,8,9}};//结果应为3
int Res[MAX_BUF];
int i = 0;
func(&(A[0][0]),3,3,Res,MAX_BUF);

while(Res[i] != -1)
{
printf("第%d行,第%d 列 为鞍数 :%d\n",Res[i]+1,Res[i+1]+1,Res[i+2]);
i+=3;
}

}
/*
输出:第1行,第3 列 为鞍数 :3
*/