找出一个二维数组的鞍点,即该位置上的元素在该行元素中最大,在该列元素中最小。二维数组也可能没有鞍点

#include <iostream>
using namespace std;
void find(int*a,int n)//n为行数
{
int i,j,k,maxj,flag=0;
for(i=0;i<n;i++)
{
max=a[i][0];
maxj=0;
for(j=1;j<4;j++)//查找第i行中的最大值
if(a[i][j]<max)
max=a[i][j],maxj=j;
for(k=0;k<n;k++)//判断max是否为该列最小值
if(max>a[k][maxj])
continue;
if(k>=n)//是鞍点
{
cout<<"a["<<i<<"]["<<maxj<<"]="<<max<<endl;
flag=1;
}
}
if(!flag)//没有鞍点
cout<<"No!\n";
}
int main()
{
int a[3][4]={{1,2,3,4},{4,5,5,6},{3,5,6,7}};
find(a,3);
return 0;
}
是道改错题

1 find函数头改为 void find(int a[][4],int n)
2 find函数开始处增加语句: int max;
3 if(a[i][j]<max) 改为 if(a[i][j]>max)
4 continue; 改为 break;
温馨提示:答案为网友推荐,仅供参考
相似回答