首页 > 其他分享 >动态规划(一)

动态规划(一)

时间:2023-01-24 21:23:09浏览次数:72  
标签:蜂房 return int 规划 楼梯 最优 动态 方法

引入:斐波那契数列

递归版本:(太慢需要优化)

int f(int n) {
	if (n == 0 || n == 1) return 1;
	else return f(n - 1) + f(n - 2);
}

递推版本:

a[0] = a[1] = 1;
for (int i = 2; i <= n; i++) {
	a[i] = a[i - 1] + a[i - 2];
}
return a[n];

总结: 递归重复计算了一些东西\((\)例如算\(f[6]\)时算了\(f[4]\),算\(f[5]\)时又算了\(f[4])\),重复子问题,导致算法效率低下。

解决方法:

  • 空间换时间
  • 已经计算过的记录下来避免重复计算
记忆化搜索版本:
int calc(int n) {
	if (f[n] != 0) return f[n];
	else return (f[n] = calc(n - 1) + calc(n - 2));
}

记忆化搜索

  • 用数组等将已经算过的东西记录下来在下一次要使用的直接用已经算出的值,避免重复运算,去掉的重复的搜索树。

走楼梯问题

题目描述:
爬n阶的楼梯,一次可以爬1阶或2阶,问要爬完这n阶楼梯,共有多少种方法?
思考:
假设现在在第n阶楼梯上,显然上一步是在n-1阶或者n-2阶,根据分类加法原理知道,第n阶的方法=n-1阶的方法+n-2阶的方法
同样的,对于n-1阶和n-2阶用类似方法求解。
求到第1阶和第2阶时,显然方法数分别为1,2。
所以用\(f[i]\)表示爬到第i阶的方法数,那么
f[1] = 1, f[2] = 2;
f[i] = f[i-1]+f[i-2];

拓展:
若规定有\(m\)个第\(x_i\)级楼梯不能走
解决方法:f[\(x_i\)] = 0,就相当于不能走。

爬蜂房(斐波那契变形)

题目描述:
一只蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行。计算蜜蜂从蜂房a爬到蜂房b的可能路线数。
image
方法:
用f[i]表示从a爬到i的方案数
\(i < a,f[i] = 0;\)
\(i = a,f[i] = 1;\)
\(i > a,f[i] = f[i-1]+f[i-2];\)

一、动态规划概述

  • 动态规划是解决多阶段决策过程最优化的一种方法。
  • 最优化原理: 子问题的局部最优将导致整个问题的全局最优,即问题具有 最优子结构 的性质,也就是说一个问题的最优解只取决于其子问题的最优解

标签:蜂房,return,int,规划,楼梯,最优,动态,方法
From: https://www.cnblogs.com/csai-H/p/17066402.html

相关文章

  • fiddler动态调试js
    背景 昨天获取到的网易云音乐站点的请求内容居然是加密的,就需要动态的调试js找出params很secSeky未加密之前的内容。调试方法 调试之前需要在目标浏览器上部署上fi......
  • 2023.1.24动态规划练习
    洛谷P1220关路灯题目描述某一村庄在一条路线上安装了\(n\)盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少)。老张就住在这条路中间某一路灯旁,他有一项工......
  • 通过具体的两个例子,学习 ABAP 动态断点的使用诀窍
    本教程之前的步骤,我们学习了SAPGUI中ABAP调试器的使用方式:13.最浅显易懂的SAPGUI里ABAP调试器的使用方法介绍借助这个有用的程序调试工具,我们可以自行找到一......
  • m基于NSGAII优化算法的微网系统的多目标优化规划matlab仿真
    1.算法描述NSGA-II是基于的非支配排序的方法,在NSGA上进行改进,也是多目标进化优化领域一个里程碑式的一个算法。NSGA-Ⅱ算法是Srinivas和Deb于2000年在NSGA的基......
  • m基于NSGAII优化算法的微网系统的多目标优化规划matlab仿真
    1.算法描述       NSGA-II是基于的非支配排序的方法,在NSGA上进行改进,也是多目标进化优化领域一个里程碑式的一个算法。       NSGA-Ⅱ算法是Srinivas......
  • 我不会动态规划
    DP杂题【POI2015】洗车-Carwashes-Myjnie经典笛卡尔树上DP,设\(dp_{l,r,k}\)表示区间\([l,r]\)最小值为\(k\)的总收益,枚举最小位置\(p\),为了避免算重,只考虑......
  • Solution 题解 UVA1389 Hard Life: 最小割,有向图,分数规划,和牛顿迭代
    题解UVA1389HardLife:最小割,有向图,分数规划,和牛顿迭代Preface黑题好耶看到了题解里面大多数是二分,我就来讲一讲简单又快速的DinkelbachAlgorithm吧!0-1分数规划......
  • D - Money in Hand -- 动态规划
    D-MoneyinHandhttps://atcoder.jp/contests/abc286/tasks/abc286_d 思路dp[i][j]:forjyuan,findifitispossibletogetjyuanwiththefirsticoins.......
  • 第七章 动态函数
    当条件变化时,输出可以随之变化本章主要介绍FILTER函数(EXCEL2021才有)与SUBTOTAL函数1、FILTER函数依据条件筛选数据FILTER(数据区,筛选条件,[无合适结果时返回的值])e......
  • 动态组件
                 ......