1和8wa了,求助

P1434 [SHOI2002] 滑雪

睡眼惺忪 @ 2021-09-08 20:47:19

#include <bits/stdc++.h>

using namespace std;

int num[101][101];
int ans[101][101];

int max(int a,int b)
{
    return a>b?a:b;
}

int Row,Col;

int dfs(int row,int col){
    if (ans[row][col]) return ans[row][col];
    int r=row,c=col,m=-1;
    if (num[row][col]>num[row-1][col] && row>=2)   
    {
        if (m<num[row-1][col])
        {
            m=num[row-1][col];
            r=row-1;
        }
    }
    if (num[row][col]>num[row+1][col] && row+1<=Row)   
    {
        if (m<num[row+1][col])
        {
            m=num[row+1][col];
            r=row+1;
        }
    }
    if (num[row][col]>num[row][col-1] && col>=2)   
    {
        if (m<num[row][col-1])
        {
            m=num[row][col-1];
            r=row;
            c=col-1;
        }
    }
    if (num[row][col]>num[row][col+1] && col+1<=Col)    
    {
        if (m<num[row][col+1])
        {
            m=num[row][col+1];
            r=row;
            c=col+1;
        }
    }
    if (m==-1) 
    {
        ans[row][col]=1;
        return ans[row][col];
    }
    ans[row][col]=dfs(r,c)+1;

    return ans[row][col];
}

int main(){
    cin>>Row>>Col;
    for (int i=0;i<=100;i++)
    {
        for (int j=0;j<=100;j++)
        {
            num[i][j]=0;
        }
    }
    for (int i=1;i<=Row;i++)
    {
        for (int j=1;j<=Col;j++)
        {
            scanf("%d",&num[i][j]);
        }
    }
    for (int i=1;i<=Row;i++)
    {
        for (int j=1;j<=Col;j++)
        {
            dfs(i,j);
        }
    }
    int a=0;
    for (int i=1;i<=Row;i++)
    {
        for (int j=1;j<=Col;j++)
        {
            a=max(a,ans[i][j]);
        }
    }
    cout<<a;

    return 0;
}

|