动态规划解题套路框架

另外!!!# define maxn 100005最好多5个

509.斐波那契数
322.零钱兑换

斐波那契数

#include <iostream>
#include<bits/stdc++.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
#define maxn 100000
int mem[maxn]={0};int dp(int n)
{if(n==1||n==2){mem[n]=1;return 1;}if(mem[n]!=0){return mem[n];}mem[n]=dp(n-1)+dp(n-2);///确实好久不写了,这里一定要用函数 return mem[n];}int main(int argc, char** argv) {cout<<dp(8);return 0;
}

零钱兑换

#include <iostream>
#include<bits/stdc++.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
#define maxn 10000
int coin[3]={1,2,5};
int coinnum=3;
///int mem[maxn]={maxn};这句话是错的,初始不赋0的话只能赋第一个
int mem[maxn]={0};
int dp(int n)///还剩n元
{if(n==0)///小于零的一会在选择上踢出去 {return 0;}if(mem[n]!=0){return mem[n];}int res=maxn;for(int i=0;i<coinnum;i++){if(n-coin[i]<0){continue;}res=min(res,dp(n-coin[i])+1);}mem[n]=res;return mem[n];}int main(int argc, char** argv) {cout<<dp(11);return 0;
}

错误代码:::!!!!!!

#include <iostream>
#include<bits/stdc++.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
#define maxn 10005
int coin[3]={1,2,5};
int coinnum=3;
///int mem[maxn]={maxn};这句话是错的,初始只能赋0
int mem[maxn]={0};
int dp(int n)///还剩n元
{if(n==0)///小于零的一会在选择上踢出去 {return 0;}if(mem[n]!=maxn){return mem[n];}for(int i=0;i<coinnum;i++){if(n-coin[i]<0){continue;}mem[n]=min(mem[n],dp(n-coin[i])+1);}return mem[n];}int main(int argc, char** argv) {for(int i=0;i<=11;i++)//这里写错成了没有等号,结果一调mem【11】就不相同,为0{mem[i]=maxn;}cout<<dp(11);return 0;
}

动态规划解题套路框架相关推荐

  1. BFS 算法解题套路框架+几个用于BFS的set与queue用法和技巧

    BFS 算法解题套路框架 几个用于BFS的set与queue用法和技巧(set查找visited queue正常用) queue<int>q; set<string>s; in ...

  2. 一文学会动态规划解题技巧

    前言 动态规划(dynamic programming,简称 dp)是工程中非常重要的解决问题的思想,从我们在工程中地图软件上应用的最短路径问题,再在生活中的在淘宝上如何凑单以便利用满减券来最大程度地 ...

  3. 动态规划解题一般思路

    1.递归到动规的一般转化方法 递归函数有n个参数,就定义一个n为值的逆过程的数组,数组的下标是递归函数参数的取值范围,数组元素的值是递归函数的返回值,这样就可以从边界值开始,逐步填充数组,相当于计算递 ...

  4. 10.2 动态规划算法套路及空间优化 —— Climbing Stairs Unique Paths

    这一篇文章从最简单的动态规划题目开始,结合上一节动态规划三要素,以LeetCode两道基础的DP题目阐述DP问题的基本套路解法. 70. Climbing Stairs You are climbin ...

  5. 动态规划解题思路与总结(三万字)

    动态规划 前言 手把手如何写动态规划 最长路径 网格 最长上升子序列问题 求最长上升子序列 最长非严格递增子序列 至少修改多少次能将序列变为上升序列 最长公共上升子序列 分级问题 移动服务 传纸条 排 ...

  6. 【蓝桥杯刷题冲刺辅导】掌握递归·DFS解题套路,这一文足以?

    大家好,我是安然无虞. 目录 一.刷题前和铁汁们唠一唠 1.刷题前须知 2.刷题时套路 <1>套路 <2>背下列常用数 ​ <3>投机取巧:根据数据范围确定算法 ​ ...

  7. 第一次接触动态规划解题

    废话 一道力扣easy没做出来-我是fw, orz.看了题解觉得学到了很多,记录下来和大家分享一下. 题目 你是一个专业的小偷,计划偷窃沿街的房屋.每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就 ...

  8. 动态规划解题思路总结归纳(一)

    一.动态规划的三大步骤 定义:动态规划,无非就是利用历史记录,来避免我们的重复计算.而这些历史记录,我们得需要一些变量来保存,一般是用一维数组或者二维数组来保存 步骤一:定义数组元素含义,例如定义一个 ...

  9. 【算法基础】动态规划解题实例之野营问题

    问题描述: 假设你要去野营.你有一个容量为6磅的背包,需要决定该携带下面的哪些东西.其中每样东西都有相应的价值,价值越大意味着越重要: 水(重3磅,价值10) 书(重1磅,价值3) 食物(重2磅,价值 ...

最新文章

  1. Android多媒体开发:照相机
  2. php函数网,php函数
  3. 难道冬泳都会断子绝孙?
  4. 平衡二叉搜索树的创建
  5. 零基础学python要多久-零基础如何学Python?小白学Python需要多久?
  6. getset原子性 redis_对比各类分布式锁缺陷,抓住Redis分布式锁实现命门
  7. Java基础-面向对象进阶-多态包final权限修饰符代码块
  8. 5. Carla中Recorder(记录器)的使用
  9. 仿绚丽彩虹播放器程序源码
  10. 除尘器选型需要考虑的因素
  11. 追梦算法网----团队数量
  12. Bash Specially-crafted Environment Variables Code Injection Vulnerability Analysis
  13. 使用yum下载文件报No module named urlgrabber.grabber错
  14. warframe在路由器上添加虚拟服务器,卡结算warframe方法
  15. unordered_set使用介绍
  16. SINS/DR组合导航(一)
  17. 计算机专业学生必看的网站
  18. FPGA学习笔记1.1——10人表决器
  19. 记一次snmp远程连接失败的记录
  20. 路径规划算法——RRTStar

热门文章

  1. php mysql-mysqli
  2. ServletContext2
  3. 封装各种生成唯一性ID算法的工具类
  4. Windows Server 2008 如何在IIS中添加MIME类型
  5. DotNetNuke与MemberShip的结合(五年版) 三步汇总
  6. linux man命令的1和1p,Linux中man命令的使用方法再解释
  7. python中xlwt的局限,Python xlwt 生成Excel和设置特定单元格不可编辑
  8. android恶意扣费类程序,10款APP违法有害 主要危害涉及恶意扣费等5类
  9. c语言 号咋打,C语言C语言中的开头#号如何打? – 手机爱问
  10. python callback函数_回调函数callbacks