第1个回答 2017-09-28
#include<stdio.h>
#define M 3
#define N 3
struct index{
int x,y;
};
static index ss[100];
int count = 0;
int min(int t[],int n)
{
int temp=30000,flag;
for(int i=0;i<n;i++)
if(t[i]<temp)
{temp=t[i];flag=i;}
return flag;
}
void andian(int a[M][N],int m,int n)
{
int tmp;int k;
for(int i=0;i<m;i++)
{
int flg=1;
k=min(a[i],n);
tmp=a[i][k];
for(int j=0;j<m;j++)
if(tmp<a[j][k])
flg=0;
if(flg==1)
{
ss[count].x=i;
ss[count].y=k;
count++;
}
}
}
void main()
{
for(int i=0;i<100;i++)
ss[i].x=-1;
int A[M][N];
// int A[M][N]={4,5,6
// ,1,0,1,
// 1,1,1};
printf("请输入%d*%d矩阵:\n",M,N);
for(int p=0;p<M;p++)
for(int q=0;q<N;q++)
scanf("%d",*(A+p)+q);
andian(A,M,N);
int f=0;
if(ss[f].x==-1) printf("无鞍点\n");
else
while(ss[f].x!=-1)
{ printf("鞍点:A[%d,%d]=%d\n",ss[f].x,ss[f].y,A[ss[f].x][ss[f].y]); f++;}
printf("鞍点数为%d\n",count);
}