街的地图是一个N*N的矩阵(自行填充整数),矩阵内部数据是地势高度。向东南西北四个方向望去,地形都不会遮挡其视线。地形如下所示,试判断此矩阵中是否有这样的点。


#include
int main()
{
    int a[5][5]={{1,2,5,3,7},{3,5,2,6,7},{2,8,6,5,4},{4,6,2,7,2},{2,3,1,4,5}};
    int i,j,m=0,k,t=0;
    int x=-1,y=-1;
    for(i=0;i<5;i++)
    {
        for(j=0;j<5;j++)
        printf("%d ",a[i][j]);
        printf("\n");
    }
    for(i=0;i<5;i++)
    {
        for(j=0;j<5;j++)
        {
            m=t=0;
            for(k=0;k<5;k++)
            {
                if(a[i][j]>a[i][k])
                m++;
                if(a[i][j]>a[k][j])
                t++;
            }
            if(m==4&&t==4)
            {
                m=t=0;
                for(k=j-1;k>1;k--)
                {
                    if(a[i][k]>a[i][k-1])
                    m++;
                }
                for(k=j+1;k<5;k++)
                {
                    if(a[i][k]>a[i][k+1])
                    t++;
                }
                if(m==j-2&&t==5-j-1)
                {
                    m=t=0;
                    for(k=i-1;k>1;k--)
                {
                    if(a[k][j]>a[k-1][j])
                    m++;
                }
                for(k=i+1;k<5;k++)
                {
                    if(a[k][j]>a[k+1][j])
                    t++;
                }
                if(m==i-2&&t==5-i-1)
                {
                    x=i+1;
                    y=j+1;
                    printf("皇宫的位置可以为:(%d,&d)",x,y);
                }
                }
                
            }
        }
    }
    if(x==-1&&y==-1)
    printf("该地区没有位置可以建立皇宫");
    return 0;
 } #include
int main()
{
    int a[5][5]={{1,2,5,3,7},{3,5,2,6,7},{2,8,6,5,4},{4,6,2,7,2},{2,3,1,4,5}};
    int i,j,m=0,k,t=0;
    int x=-1,y=-1;
    for(i=0;i<5;i++)
    {
        for(j=0;j<5;j++)
        printf("%d ",a[i][j]);
        printf("\n");
    }
    for(i=0;i<5;i++)
    {
        for(j=0;j<5;j++)
        {
            m=t=0;
            for(k=0;k<5;k++)
            {
                if(a[i][j]>a[i][k])
                m++;
                if(a[i][j]>a[k][j])
                t++;
            }
            if(m==4&&t==4)
            {
                m=t=0;
                for(k=j-1;k>1;k--)
                {
                    if(a[i][k]>a[i][k-1])
                    m++;
                }
                for(k=j+1;k<5;k++)
                {
                    if(a[i][k]>a[i][k+1])
                    t++;
                }
                if(m==j-2&&t==5-j-1)
                {
                    m=t=0;
                    for(k=i-1;k>1;k--)
                {
                    if(a[k][j]>a[k-1][j])
                    m++;
                }
                for(k=i+1;k<5;k++)
                {
                    if(a[k][j]>a[k+1][j])
                    t++;
                }
                if(m==i-2&&t==5-i-1)
                {
                    x=i+1;
                    y=j+1;
                    printf("皇宫的位置可以为:(%d,&d)",x,y);
                }
                }
                
            }
        }
    }
    if(x==-1&&y==-1)
    printf("该地区没有位置可以建立皇宫");
    return 0;
 } 

能帮我看看判断那里出问题了,出来的结果错了。

把问题转化为每一个坐标按行与列的比较。
我试着写了一个。

img