北大OJ 1088

来源:互联网 发布:js escape的用法 编辑:程序博客网 时间:2024/05/19 23:24

题目:

即二维数组,从任一点开始,只能向值比它小的上下左右的方向遍历,求能最多的遍历次数?



#include<stdio.h>


int row=0,col=0;
int height[110][110]={0},len[110][110]={0};
int getlen(int i,int j,int path);


int ijhigher(int i,int j,int x,int y,int path)
{
    if ( x>=0 && x<row && y>=0 && y<col && height[i][j]>height[x][y] )
        {
            if(len[x][y]==0)
                path=1+getlen(x,y,path);
            else
                path=1+len[x][y];
        }
    len[i][j]=len[i][j]>path?len[i][j]:path;


    return 0;
}


int getlen(int i,int j,int path)
{
    if (len[i][j]!=0)
        return len[i][j];


    ijhigher(i,j,i-1,j,path);
    ijhigher(i,j,i,j-1,path);
    ijhigher(i,j,i+1,j,path);
    ijhigher(i,j,i,j+1,path);


    return len[i][j];
}


int main (void)
{
    int i=0,j=0;
    int maxlen=1;
    scanf("%d %d",&row,&col);


    for (i=0;i<row;i++)
        for (j=0;j<col;j++)
            scanf("%d",&height[i][j]);




    for (i=0;i<row;i++)
        for (j=0;j<col;j++)
        {
            len[i][j]=getlen(i,j,1);
            maxlen= maxlen>len[i][j]? maxlen:len[i][j];
        }


    printf("%d ", maxlen);
    return 0;
}




原创粉丝点击