c++寻找二维数组中的鞍点,即该位置上的元素是所在行上最大的元素是所在列上最小的元素。也可能没有鞍点

输入:输入二维数组行数和列数,以及其中所有元素,元素间以空格分隔。
输出:
若有鞍点,则输出鞍点值,最近鞍点所在行和列,空格分隔;若无鞍点,则输出“无鞍点”信息。
行、列下标以0开始。

#include<iostream>
using namespace std;
#define N 2
#define M 3
int inout(int B[][M],int);
int main()

  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;
}
温馨提示:答案为网友推荐,仅供参考
相似回答