C++ 求二维数组中的鞍点
#include<iostream>
using namespace std;
#define N 2
#define M 3
int main()
{ int inout(int B[][M],int);//多维数组作为实参和形参,在对参数数组声明时,必须指定第二维(即列)的大小,且应与实参的第二维的大小相同,第一维的大小可以指定,也可以不指定
int A[N][M];
int i,j,p=0;
cout<<"请输入数组A[N][M]的元素:"<<endl;
for(i=0;i<N;i++)
{for(j=0;j<M;j++)
{cin>>A[i][j];}
}
cout<<"A[N][M]="<<endl;
for(i=0;i<N;i++)
{for(j=0;j<M;j++)
{cout<<A[i][j]<<" ";}
cout<<endl;
}
p=inout(A,p);//判断鞍点子函数
if(p!=1) cout<<"!!!数组A[n][m]没有鞍点"<<endl;
return 0;
}
int inout(int B[][M],int l)
{int i,j,max,q=0,h;
for(i=0;i<N;i++)//求各行最小值,并记下列下标
{ max=B[i][0];
for(j=0;j<M;j++)
{
if(max>B[i][j])
{
max=B[i][j];
q=j;
}
}
int flag=0;
for(h=0;h<N;h++)//判断该行最小值是否同时为列最大值
{
if(B[h][q]>=B[i][q])
{
flag=1;
break;
}
if(flag==0)
{cout<<"数组A[n][m]中的鞍点是"<<B[i][q]<<" "<<"位置是:"<<"第"<<i<<"行"<<"第"<<q<<"列" <<endl;l=1;}
}
return l;
}