题解 P1434 【滑雪】

news/2024/7/3 12:16:16

题目链接

此题运用功能强大的 ~~暴力搜索~~

 记忆化搜索才是重点!!!

然而,这是一道经典的DP问题

 如果我们用$dis[i][j]$来表示坐标为$(i,j)$时的高度

 $cnt[i][j]$ 是我们的记忆化数组

在合法的前提下,就有状态转移方程:

 $dis[i][j]=max(dis[i-1][j],dis[i][j-1],dis[i+1][j],dis[i][j+1])$

好啦,直接上代码吧:其实挺暴力:

 $2^{33……}$

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;//头文件不说啥
int dis[100][100];
int cnt[100][100];
int row,col;//行列数
inline int DP(int i, int j)//状态转移
{
     int max1=0;
    
    if(cnt[i][j]>0)
        return cnt[i][j];//记忆化,如果被搜过,跳就好
    
    //判断dis[i][j-1]是否合法
    if(j-1>=0)//边界条件
      if(dis[i][j]>dis[i][j-1])//转移条件
        if(max1<DP(i,j-1))
          max1=DP(i,j-1);
    
    //判断dis[i][j+1]是否合法
    if(j+1<=col-1)
      if(dis[i][j]>dis[i][j+1])
        if(max1<DP(i,j+1))
            max1=DP(i,j+1);
    
    //判断dis[i-1][j]是否合法
     if(i-1>=0)
        if(dis[i][j]>dis[i-1][j])
        if(max1<DP(i-1,j))
          max1=DP(i-1,j);
    
    //判断dis[i+1][j]是否合法
    if(i+1<=row-1)
      if(dis[i][j]>dis[i+1][j])
        if(max1<DP(i+1,j))
          max1=DP(i+1,j);
 
    return cnt[i][j]=max1+1;//转移
}
int main()
{
    scanf("%d%d",&row,&col);//输入
     for(int i=0;i<=row-1;i++)
        for(int j=0;j<=col-1;j++)
          scanf("%d",&dis[i][j]);

    for(int i=0;i<=row-1;i++)//状态转移
        for(int j=0;j<=col-1;j++)
        DP(i, j);
        
    for(int i=0;i<=row-1;i++)//找最大值
        for(int j=0;j<=col-1;j++)
         if(cnt[0][0]<cnt[i][j])
            cnt[0][0]=cnt[i][j];

    printf("%d",cnt[0][0]);//输出
    return 0;//程序拜拜
}

 


http://www.niftyadmin.cn/n/4585937.html

相关文章

加密领域第一季度回顾和市场展望

加密领域第一季度回顾和市场展望 快览&#xff1a; 尽管市场低迷&#xff0c;但加密投资在第一季度仍然非常活跃。在基础设施方面&#xff0c;我们在跨链解决方案和DAO工具中看到了很多的动向。新的 layer-1仍在孵化中。在以太坊上开发的DeFi原语正在扩展到更新的L1&#xff0…

hadoop2-shell操作详解

转载之&#xff1a;https://www.cnblogs.com/870386641drh/p/4262593.html FS Shell调用文件系统(FS)Shell命令应使用 bin/hadoop fs <args>的形式。 所有的的FS shell命令使用URI路径作为参数。URI格式是scheme://authority/path。对HDFS文件系统&#xff0c;scheme是hd…

Android apk程序调用其它的APK程序

Intent mIntent new Intent(); ComponentName comp new ComponentName("启动的APK包名","启动的APK入口类&#xff08;包名加类名&#xff09;"); mIntent.setComponent(comp); mIntent.setAction("android.intent.action.MAIN"); startActivi…

如何使用 Solidity 编写 PayNow 函数?

如何使用 Solidity 编写 PayNow 函数&#xff1f; 介绍 web3经济正在蓬勃发展&#xff0c;学习这项技术的最佳时机就是现在。我们不能错过对web3开发者的全球需求。 区块链开发人员的平均年薪大约是146250美元&#xff0c;这是其他软件开发职业中最高的。 现在对web3开发人员…

红杉、IDG、北极光、顺为等投资大咖怎么看智能硬件

回顾2015年的智能硬件领域创业&#xff0c;谷歌、 Facebook、微软等国际巨头&#xff0c;BAT等国内大佬都争相角逐&#xff0c;智能硬件的上下游产业链及行业生态已经开始形成&#xff0c;巨头们的领跑将开启智能硬件一个新的时代。让我们来看看&#xff0c;智能硬件领域的投资…

Hive配置Kerberos认证

关于 Kerberos 的安装和 HDFS 配置 kerberos 认证&#xff0c;请参考 HDFS配置kerberos认证。 关于 Kerberos 的安装和 YARN 配置 kerberos 认证&#xff0c;请参考 YARN配置kerberos认证。 1. 环境说明 系统环境&#xff1a; 操作系统&#xff1a;CentOs 6.6Hadoop版本&#x…

Linux初级入门百篇-lsof工具

losf工具内容提要1. 熟悉 lsof 的功能2. 掌握 lsof 命令的使用losf的功能和命令格式 在系统管理中常常用到 lsof 工具&#xff0c;是系统监测工具之一。lsof&#xff08;list open files&#xff09;可以用来查看正在运行中的进程…

这些项目会不会在Coinbase露面?

这些项目会不会在Coinbase露面&#xff1f; BiFi (BIFI) 市场统计数据 BiFi价格&#xff1a;0.0267美元……市值&#xff1a;8268900美元市值排名&#xff1a;1236历史最高价&#xff1a;0.297美元…历史最低价&#xff1a;0.01024美元… 研究 BiFi目前的价格为0.0268美元。…