十一三亚旅游:找出一个2维数组中的鞍点,即该位置上的元素在该行最大,在该列上最小。也可能没有鞍点。

来源:百度文库 编辑:神马品牌网 时间:2024/05/02 09:56:56
刚学C语言,请多多指教哦

#include<stdio.h>
main()
{
int a[3][3]={1,2,3,4,5,6,7,8,9};
int i=0,j=0;
int max,min;
for(i=0;i<3;i++)
{
max=a[i][0];
int k=0;
for(j=1;j<3;j++)
{
if(a[i][j]>max)
{
max=a[i][j];
k=j;
}
}
min=a[0][k];
int m=0;
for(j=1;j<3;j++)
{
if(min>a[j][k])
{
min=a[j][k];
m=j;
}
}
if(m==i)
printf("in line %d has a point, in row %d\n",i,k);
else
printf("int line %d doesn't hava a point\n",i);
}
}

这是3*3的数组

#include<stdio.h>

void f(int *p,int n,int m)
{
int b[100];
int i,j,k,l,c,x=0;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
c=0;
for(k=0;k<n;k++)
{
if(k==i)
continue;
else
{
if(*(p+100*i+j)>=*(p+100*k+j))
c++;
}
}
for(k=0;k<m;k++)
{
if(j==k)
continue;
else
{
if(*(p+100*i+j)<=*(p+100*i+k))
c++;
}
}

if(c==0)
{

*(b+x)=*(p+100*i+j);

x++;
}
}
}
if(x==0)
printf("not exist\n");
else
{
int m=b[0];
for(i=1;i<x;i++)
{
if(b[i]<m)
m=b[i];
}
printf("%d\n",m);
}
}
void main()
{

int a[100][100],i,j,k,n,m;
scanf("%d%d",&n,&m);
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
scanf("%d",&a[i][j]);
}
int *p;
p=&a[0][0];
f(p,n,m);
}