当前位置: 首页 > news >正文

动态规划(线性DP):DFS->记忆化->DP(Leetcode 746)

在这里插入图片描述

一、动态规划解题步骤:

在这里插入图片描述

1.1、题解

在这里插入图片描述
在这里插入图片描述

二、DFS暴搜

  • 因为我们不确定开始是从第一/第二层开始搜所以可以逆向从最高层(n)开始搜索
class Solution 
{
public:int dfs(int n,vector<int>& cost){if(n==0 || n==1) return 0;  //从0/1开始爬,所以此时费用为0else return min(dfs(n-1,cost)+cost[n-1],dfs(n-2,cost)+cost[n-2]);}int minCostClimbingStairs(vector<int>& cost) {int n=cost.size();int res=dfs(n,cost);return res;}
};

三、记忆化搜索

  • 注意此时虽然DFS的参数有两个,但是mem的参数可以只开一维,因为只有一个楼层数n影响到边界
const int N=1007;class Solution 
{
public:int mem[N];int dfs(int n,vector<int>& cost){if(mem[n]) return mem[n];int sum=0;if(n==0 || n==1) sum = 0;  //从0/1开始爬,所以此时费用为0else sum= min(dfs(n-1,cost)+cost[n-1],dfs(n-2,cost)+cost[n-2]);mem[n]=sum;return mem[n];}int minCostClimbingStairs(vector<int>& cost) {int n=cost.size();//memset(mem,0,sizeof(mem));  //初始化memint res=dfs(n,cost);return res;}
};

四、线性DP

  • 此时的动态转移方程与DFS的递归方程基本一致
const int N=1007;class Solution 
{
public:int mem[N];// int dfs(int n,vector<int>& cost)// {//     if(mem[n]) return mem[n];//     int sum=0;//     if(n==0 || n==1) sum = 0;  //从0/1开始爬,所以此时费用为0//     else sum= min(dfs(n-1,cost)+cost[n-1],dfs(n-2,cost)+cost[n-2]);//     mem[n]=sum;//     return mem[n];// }int minCostClimbingStairs(vector<int>& cost) {int n=cost.size();int f[N];f[0]=f[1]=0;for(int i=2;i<=n;i++){f[i]=min(f[i-1]+cost[i-1],f[i-2]+cost[i-2]);}return f[n];}
};

http://www.mrgr.cn/news/65897.html

相关文章:

  • 初识动态规划(由浅入深)
  • RabbitMQ交换机类型
  • 【计网不挂科】计算机网络期末考试中常见【选择题&填空题&判断题&简述题】题库(3)
  • 十四届蓝桥杯STEMA考试Python真题试卷第二套第二题
  • 深度学习:Yolo V4的改进
  • android——渐变色
  • 【ARM Linux 系统稳定性分析入门及渐进 1.2 -- Crash 工具依赖内容】
  • SpringBoot项目集成ONLYOFFICE
  • 【Python图像处理】入门到精通
  • 笔尖与灵魂的对话:写作,习惯之花绽放
  • Python异常检测 - LSTM(长短期记忆网络)
  • 南宁周边乡村游微信小程序ssm+论文源码调试讲解
  • Qt Event事件系统小探1
  • 跨平台开发时如何避免系统依赖导致的错误(跨平台项目中如何优雅地处理系统特定模块,例如:pywin32)
  • Echarts环形图引线设置
  • 【ARM Linux 系统稳定性分析入门及渐进 1.3 -- Crash工具编译过程】
  • electron 中 ipcRenderer 作用
  • PLC远程下载网关「SSF-BOX-100」:轻松应对PLC 远程调试\程序下载
  • CloudStack云管理平台ISO注册
  • 微信公众号推送
  • 领略CSS Flex布局的精髓:打造响应式与创新设计
  • Redis数据库测试和缓存穿透、雪崩、击穿
  • 轻量级游戏服务器框架:skynet的原理讲解
  • Hadoop简介及单点伪分布式安装
  • C++:模拟实现STL的vector
  • 【含文档】基于ssm+jsp的宠物猫狗商业系统 (含源码+数据库+lw)