求出二维数组中的鞍点(多鞍点)

编写程序求出二维数组中的鞍点。所谓鞍点是指一个矩阵元素的值在其所在行中最大,在所在列中最小。结果放在数组s1,s2中,表示a[s1[i]][s2[i]]是一个鞍点,并按行升序排列。
输入样例:

 1 2 3 4 5
 6 7 8 9 10
 11 12 13 14 15
 16 17 18 19 20
 21 22 23 24 25

输出样例:

1个鞍点
鞍点值为5
#include
using namespace std;
#define m 5
#define n 5
int main()
{
 int a[5][5],b[5];
  int d[5],e=0;
 int i,j max,min,k,s,count=0;
 for(i=0;i<5;i++)
 {
  for(j=0;j<5;j++)
  {
   cin>>a[i][j];
  }
 }
 for(j=0;j<5;j++)
 {
  max=a[j][0];
  for(i=0;i<5;i++)
  {
   if(a[j][i]>max)
   {
    max=a[j][i];
   }
  }
  s=0;
  for(i=0;i<5;i++)
  {
   if(a[j][i]==max)
   {
    b[s]=i;
    s++;
   }
  }
  min=max;
  for(i=0;i<s;i++)
  {
   for(k=0;k<5;k++)
   {
    if(min>a[k][b[i]])
    {
     break;
    }
   }
   if(k==5)
   {
    d[e]=a[j][b[i]];
    count++;
    e++;
   }
  }
 }
 if(count==0)
 {
  cout<<"无鞍点"<<endl; 
 }
 else
 {
  cout<<count<<"个鞍点"<<endl;
  cout<<"鞍点值为:";
   for(int i=0;i<e;i++)
   {
    cout<<d[i]<<" "<<endl;
   }
 }
}
  

你可能感兴趣的:(求出二维数组中的鞍点(多鞍点))