题解报告:P1434 [SHOI2002]滑雪

简介: 算法

链接:

zzz

题意:

3.png

思路:

dfs+记忆化

原本应该每个点都去搜,但是会超时,所以用记忆化搜索把答案存储在数组里,保证复杂度不会太高。

自己的问题,没有想过用返回值来存答案,dfs里的每一步都挺妙的。

#include<bits/stdc++.h>
using namespace std;
const int maxn=105;
int a[maxn][maxn];
int ans[maxn][maxn];
int x1[5]={  0,1,-1,0,0};
int y11[5]={0,0,0,1,-1};
int n,m;
int  dfs(int x,int y)
{
    int mx,my,i,j;
    if(ans[x][y]!=0) return ans[x][y];
    ans[x][y]=1;
    for(i=1;i<=4;i++){
        mx=x1[i]+x;
        my=y11[i]+y;
        if(a[mx][my]<a[x][y]&&mx>=1&&mx<=n&&my>=1&&my<=m){
                dfs(mx,my);
                ans[x][y]=max(ans[x][y],ans[mx][my]+1);
        }
    }
    return ans[x][y];
}
int main()
{
    int i,j;
    cin>>n>>m;
    for(i=1;i<=n;i++){
        for(j=1;j<=m;j++){
            cin>>a[i][j];
        }
    }
    int anss=0;
    for(i=1;i<=n;i++){
        for(j=1;j<=m;j++){
            anss=max(anss,dfs(i,j));
        }
    }
    cout<<anss<<endl;
    return 0;
}
相关文章
|
8月前
|
存储
每日一题——leetcode682.棒球比赛
每日一题——leetcode682.棒球比赛
|
Cloud Native
【刷题日记】682. 棒球比赛
本次刷题日记的第 11 篇,力扣题为:682. 棒球比赛 ,简单
|
8月前
leetcode-682:棒球比赛
leetcode-682:棒球比赛
57 0
|
C++
【PAT甲级 - C++题解】1070 Mooncake
【PAT甲级 - C++题解】1070 Mooncake
58 1
|
存储 C++
【PAT甲级 - C++题解】1095 Cars on Campus
【PAT甲级 - C++题解】1095 Cars on Campus
80 0
|
C++
【PAT甲级 - C++题解】1147 Heaps
【PAT甲级 - C++题解】1147 Heaps
74 0
|
存储 C++ 网络架构
【PAT甲级 - C++题解】1062 Talent and Virtue
【PAT甲级 - C++题解】1062 Talent and Virtue
62 0
|
C++
【PAT甲级 - C++题解】1116 Come on! Let‘s C
【PAT甲级 - C++题解】1116 Come on! Let‘s C
98 0
|
C++
【PAT甲级 - C++题解】1077 Kuchiguse
【PAT甲级 - C++题解】1077 Kuchiguse
43 0
|
存储 C++
【PAT甲级 - C++题解】1002 A+B for Polynomials
【PAT甲级 - C++题解】1002 A+B for Polynomials
58 0