求矩阵的局部极大值

 错误代码,不知道怎么运用中间值进行if……else判断

#include<stdio.h>
int main()
{
    int m,n,a[20][20],i,j;
    scanf("%d %d",&m,&n);
    for(i=0;i<m;i++)
        for(j=0;j<n;j++)
            scanf("%d",&a[i][j]);
    for(i=0;i<m;i++)
    {for(j=0;j<n;j++)
        {
            if(a[i][j]>a[i+1][j]&&a[i][j]>a[i-1][j]&&a[i][j]>a[i][j+1]&&a[i][j]>a[i][j-1])
                printf("%d %d %d",a[i][j],i+1,j+1);
            else
                printf("None %d %d",m,n);}
    return 0;
}

正确代码,引入a[20][20]=0进行判断标准

#include<stdio.h>
int main()
{
    int m,n,a[20][20],i,j;
    a[20][20]=0;
    scanf("%d %d",&m,&n);
    for(i=0;i<m;i++)
        for(j=0;j<n;j++)
            scanf("%d",&a[i][j]);
    for(i=1;i<m-1;i++)
    {for(j=1;j<n-1;j++)
        {
            if(a[i][j]>a[i+1][j]&&a[i][j]>a[i-1][j]&&a[i][j]>a[i][j+1]&&a[i][j]>a[i][j-1])
            {printf("%d %d %d\n",a[i][j],i+1,j+1);
             a[20][20]=1;}
     }}
    if(a[20][20]==0)
        printf("None %d %d",m,n);
    return 0;
}

 

posted @ 2023-11-09 13:51  nanwu123  阅读(37)  评论(0)    收藏  举报