zoukankan      html  css  js  c++  java
  • [题解]SHOI2002,洛谷P1434 滑雪

    原题

      链接

    思路

      记忆化搜索

    代码

      

    #include<cstdio>
    #include<algorithm>
    #include<iostream>
    #include<cstring>
    using namespace std;
    
    inline int read(){
        char c=getchar();int x=0,w=1;
        while(c<'0'||c>'9'){
            if(c=='-')w=-1;
            c=getchar();
        }
        while(c>='0'&&c<='9'){
            x=(x<<3)+(x<<1)+c-'0';
            c=getchar();
        }
        return x*w;
    }
    
    int r,c,G[101][101],mem[101][101]={0},ans=0;
    
    int nx[]={-1,1,0,0},ny[]={0,0,-1,1};
    
    int dfs(int x,int y){
        if(mem[x][y])return mem[x][y];
        int flag=1;
        for(int kk=0;kk<4;kk++){
            int tagx=x+nx[kk],tagy=y+ny[kk];
            if(tagx>=1&&tagx<=r&&tagy>=1&&tagy<=c&&G[x][y]>G[tagx][tagy]){
                flag=max(dfs(tagx,tagy)+1,flag);
            }
        }
        mem[x][y]=flag;
        return flag;
    }
    
    int main(){
        r=read();c=read();
        for(int i=1;i<=r;i++)
            for(int j=1;j<=c;j++)
                G[i][j]=read();
        for(int i=1;i<=r;i++)
            for(int j=1;j<=c;j++){
                mem[i][j]=dfs(i,j);
                ans=max(ans,mem[i][j]);
            }
        printf("%d
    ",ans);
        return 0;
    } 
    本篇文章为SHINE_GEEK原创,转载请注明来源!
    written_by:SHINE_GEEK

    -------------------------------------
    签名:自己选的路,跪着也要走完;理想的实现,需要不懈奋斗!
    -------------------------------------
  • 相关阅读:
    scrapy+pymongo爬取小说实战
    Scrapy的正确安装
    linux: 用户管理,文件传送
    Java日期时间处理总结
    Numpy快速入门
    python 文件与文件夹操作
    python文件基础
    26. 删除排序数组中的重复项
    1两数之和
    152乘积最大子数组
  • 原文地址:https://www.cnblogs.com/sjrb/p/10295267.html
Copyright © 2011-2022 走看看