题解 | #滑雪#

滑雪

https://www.nowcoder.com/practice/36d613e0d7c84a9ba3af3ab0047a35e0

#include <stdio.h>
int a[100][100];
int dp[100][100];
int max(int x,int y){
    return x>y?x:y;
}
void dfs(int n,int m,int i,int j){
    if(i-1>=0&&a[i-1][j]<a[i][j]){
        dfs(n,m,i-1,j);
        dp[i][j]=max(dp[i-1][j]+1,dp[i][j]);
    }
    if(i+1<n&&a[i+1][j]<a[i][j]){
         dfs(n,m,i+1,j);
         dp[i][j]=max(dp[i+1][j]+1,dp[i][j]);
    }
    if(j-1>=0&&a[i][j-1]<a[i][j]){
        dfs(n,m,i,j-1);
        dp[i][j]=max(dp[i][j-1]+1,dp[i][j]);
    }
    if(j+1<m&&a[i][j+1]<a[i][j]){
        dfs(n,m,i,j+1);
        dp[i][j]=max(dp[i][j+1]+1,dp[i][j]);
    }
}
int main() {
    int n,m;
    scanf("%d %d", &n,&m);
    for (int i = 0; i < n; i++) {
        for(int j=0;j<m;j++){
            scanf("%d",&a[i][j]);
            dp[i][j]=1;
        }
    }
    int res=0;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            dfs(n,m,i,j);
            res=res>dp[i][j]?res:dp[i][j];
        }
    }
    printf("%d",res);
    return 0;
}

全部评论

相关推荐

KKorz:是这样的,还会定期默写抽查
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务