C++计算鞍点 程序哪儿错了

2025-05-11 15:02:20
推荐回答(1个)
回答(1):

#include

int main()
{
    int a[5][5] = {
{11,3,5,6,9},
{12,4,7,8,10},
{10,5,6,9,11},
{8,6,4,7,2},
{15,10,11,20,25}};
int b[5][5];
int m,n,c,d;
int x = 0,y = 0,r,e;
int zuihou=0;

//依次输入矩阵的元素
/*for(int i=0;i<5;i++)
{
for(int j=0;j<5;j++)
{
scanf("%d", &a[i][j]);
}
}
*/

//找出每一行里的最大值的坐标
for(m=0;m<5;m++)
{
int max=a[m][0];
y=0;
for(n=0;n<5;n++)
{
//获取每行的最大值
if(a[m][n]>max)
{
max=a[m][n];
y=n;
}
}
b[m][y]=1; //找到每行的最大值,并将对应在b数组的标识位处置为1,表示这位是最大值
 }
 
 //找出每一列里的最小值的坐标
 int min = a[0][0];
 for(c = 0; c < 5; c++)
 {
 for(d = 0; d < 5; d++)
 {
 if(a[d][c] < min)
 {
 min = a[d][c];
 r = d;
 e = c;
 }
 }  
 if(b[r][e] == 1)//如果b数组的标识位为1表示这个位置的数位最大值,且现在又多了一个最小值的条件
 {
 printf("x:%d,y:%d,value:%d\n", r, e, a[r][e]);
 ++zuihou;
 }
 min = a[0][c+1];
 r = 0;
 e = c + 1;
 }
 
 //测试有没有相同的点,如果有,即为鞍点,并输出
if(zuihou==0)
printf("not found");
 
return 0;
}


我用的c语言,#include就是c++的#include

printf("")就是输出cout,%d表示数字类型为int,scanf就是输入cin。思路差不多就这样。