马鞍点就是本行中最小的但是本列中最大的数
如图:
代码:
#include
#include
#include
using namespace std;
#define M 4
#define N 4
int minn[M],maxx[N];
void MinMax(int A[M][N])///M行中最小,N列中最大
{
int i,j;
bool have=false;
for(i=0; i
{
minn[i]=A[i][0];
for(j=1; j
if(minn[i]>A[i][j])
minn[i]=A[i][j];
}
for(j=0; j
{
maxx[j]=A[0][j];
for(i=1; i
if(maxx[j]
maxx[j]=A[i][j];
}
for(i=0; i
for(j=0; j
if(minn[i]==maxx[j])///找到马鞍点
{
printf("A[%d][%d]=%d",i,j,A[i][j]);
have=true;
}
if(!have)
printf("没有马鞍点\n");
}
int main()
{
int A[M][N]= {{9,7,6,8},{20,26,22,25},{28,36,25,30},{12,4,2,6}};
printf("A矩阵:\n");
for(int i=0; i
{
for(int j=0; j
printf("%4d",A[i][j]);
printf("\n");
}
printf("矩阵中的马鞍点:\n");
MinMax(A);
printf("\n");
printf("输出每行中最小的数\n");
for(int i=0; i
printf("%4d",minn[i]);
printf("\n");
printf("输出每列中最大的数\n");
for(int i=0; i
printf("%4d",maxx[i]);
printf("\n");
return 0;
}