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

Day11 动态规划入门

动态规划 就是 : 给定一个问题,我们把它拆成一个个子问题,直到子问题可以直接解决。然后把子问题的答案保存起来,以减少重复计算。再根据子问题答案反推,得出原问题解的一种方法.

记忆化搜索 = 暴力dfs + 记录答案

动态规划入门思路: dfs暴力 --- 记忆化搜索 --- 递推

1dfs > 2记忆化搜索 > 3逆序递推 > 4顺序递推 > 5优化空间 !

递归的过程:

"递" 的过程是: 分解子问题的过程;

"归" 的过程才是: 产生答案的过程;

"递" -- 自顶向下"归" -- 自底向上 , 其中 "底" 是 递归搜索树 的底

写出递推公式的方法:

递推 的公式 = dfs 向下 递归 的公式

递推 数组的初始值 = 递归 的边界

一.经典跳台阶

一个楼梯共有 nn 级台阶,每次可以走一级或者两级,问从第 00 级台阶走到第 nn 级台阶一共有多少种方案。

输入格式

共一行,包含一个整数 nn。

输出格式

共一行,包含一个整数,表示方案数。

数据范围

1≤n≤15

#include<iostream>
using namespace std;

const int N = 20;
int n;
int f[N];

int main(){
    scanf("%d",&n);
    f[1] = 1, f[2] = 2;
    if(n == 1 || n == 2){
        printf("%d\n", f[n]);
        return 0;
    }
    
    int newf = 0, temp1 = 1, temp2 = 2;
    for(int i = 3; i <= n; i++){
        newf = temp1 + temp2;
        temp1 = temp2;
        temp2 = newf;
    }
    
    for(int i = 3; i <= n; i++){
        f[i] = f[i - 1] + f[i - 2];
    }
    printf("%d\n",f[n]);
    return 0;
}


http://www.kler.cn/a/595154.html

相关文章:

  • 又双叒叕Scrapy爬虫相关的面试题及详细解答
  • 【React】基于自定义Hook提取公共逻辑
  • 记一次线上SQL死锁事故
  • 【数据结构】栈(Stack)、队列(Queue)、双端队列(Deque) —— 有码有图有真相
  • 深入Python C API:掌握常用函数与实战技巧
  • NAT 实验:多私网环境下 NAPT、Easy IP 配置及 FTP 服务公网映射
  • Python与命令行参数
  • 关于Flask框架30道面试题及解析
  • 【蓝桥杯速成】| 9.回溯升级
  • C/C++错误信息
  • 详细说明脚本评估和耗时较长的任务
  • mac上安装nvm及nvm的基本语法使用!!
  • 基于DeepSeek-R1 的RAG智能问答系统开发攻略
  • llama源码学习·model.py[3]ROPE旋转位置编码(4)ROPE的应用
  • 在linux服务器部署Heygem
  • 3月21号
  • 【设计模式】三十一、状态模式
  • [数据结构]排序之 归并排序(有详细的递归图解)
  • 微服务分层架构详解:表示层、应用层与基础设施层的协同工作
  • Python学习第二十二天