第1个回答 2009-11-28
咯咯.思路十分清晰
#include <stdio.h>
#include <math.h>
#define N 4
main()
{
int a[N][N],i,j,sign;
printf("Input a %d*%d array:\n",N,N);
for(i=0;i<N;i++)
for(j=0;j<N;j++)
scanf("%d",&a[i][j]);
for(i=0;i<N;i++)
for(j=0;j<N;j++)
{
sign=1;
if(i!=0)
if(!(a[i][j]<a[i-1][j]))
sign=0;
if(i!=N-1)
if(!(a[i][j]<a[i+1][j]))
sign=0;
if(j!=0)
if(!(a[i][j]<a[i][j-1]))
sign=0;
if(j!=N-1)
if(!(a[i][j]<a[i][j+1]))
sign=0;
if(sign)
printf("(%d,%d)%d\n",i,j,a[i][j]);
}
}
//验证成功 结果正确
第2个回答 2009-11-28
#include<string.h>
#include <stdio.h>
int xz[]={0,0,-1,1};
int yz[]={1,-1,0,0};
int main()
{
int data[100][100];
int m,n;
int i,j;
int p;
int x,y;
int count=0;
int flag=1;
printf("请输入行数和列数\n");
scanf("%d%d",&m,&n);
for(i=0;i<m;i++)
for(j=0;j<m;j++)
{
scanf("%d",&data[i][j]);
}
printf("你输入的矩阵如下:\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf("%d ",data[i][j]);
for(p=0;p<4;p++)
{
x=i+xz[p],y=j+yz[p];
if((x>=0&&x<4)&&(y>=0&&y<4))
{
if(data[i][j]>=data[x][y])
flag=0;
}
}
if(flag)
{
count++;
}
flag=1;
}
printf("\n");
}
printf("局部最小值总数:%d\n",count);
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
for(p=0;p<4;p++)
{
x=i+xz[p],y=j+yz[p];
if((x>=0&&x<4)&&(y>=0&&y<4))
{
if(data[i][j]>=data[x][y])
flag=0;
}
}
if(flag)
{
printf("%d %d %d\n",i+1,j+1,data[i][j]);
}
flag=1;
}
}
return 0;
}
输入格式:
3 3
1 2 3
3 1 4
5 6 7
输入上面的格式会看到结果。
有不明白的hi我。