美文网首页
动态规划问题

动态规划问题

作者: smallThree1 | 来源:发表于2017-10-20 11:00 被阅读16次

面试时被问道一个问题:

一个10阶楼梯 每次只能走1步或者2步,走到头有几种走法

当时第一反应想到的是采用暴力枚举的方案,后面回去研究了一下,这就是一个典型的动态规划问题

1.分析问题

如果最后只剩一级台阶的时候,这时候有两种情况:


1.走1步,从第九阶走 2.走2步,从第8阶走


如果知道从1到9有X钟走法,从1到8有Y种走法,可以得知总共走完需要X+Y种走法,如下图

用F(10)表示走完10阶,F(9)表示走完9阶,F(8)表示走完8阶,那么F(10) = F(9) + F(8)


如上图这就可以分析为一个典型的动态规划问题,动态规划是运筹学中的一个概念,核心思想为大事化小,小事化无

F(1)和F(2)叫做该问题的边界,没有边界的问题是永远得不到结果的,F(N)=F(N-1)+F(N-2)为状态转移公式,F(10)=F(9)+F(8)为最优子结构

function test($n){

if($n<1){

return0;

}

if($n==1){

return1;

}

if($n==2){

return2;

}

$res= test1($n-1)+ test1($n-2);

return$res;

}

function test1($n){

if($n<1){

return0;

}

if($n==1){

return1;

}

if($n==2){

return2;

}

//备忘录算法

static$map=array();

if(in_array($n,$map)){

return$map[$n];

}else{

$res= test1($n-1)+ test1($n-2);

$map[$n]=$res;

return$res;

}

}

function test2($n){

if($n==1){

return1;

}

if($n==2){

return2;

}

$a=1;

$b=2;

$temp=0;

for($i=3;$i<=$n;$i++){

$temp=$a+$b;

$a=$b;

$b=$temp;

}

return$temp;

}


相关文章

  • 浅层理解动态规划及利用动态规划解决最长公共子串等问题

    动态规划基本思想 动态规划的工作原理是先解决子问题,再逐步解决大问题。 用动态规划解决旅游规划问题 目前面对的问题...

  • 什么是动态规划

    目录 动态规划解决了什么 什么是动态规划 典型的动态规划 1. 动态规划解决了什么 的思想就是将大问题拆分成小问题...

  • 算法学习收藏

    动态规划问题 动态规划(最优子结构和重叠子问题的比较) 动态规划解决01背包问题 01背包问题 最优二叉查找树 《...

  • 其他来源:数据结构/算法学习笔记

    动态规划问题(Dynamic Programming) 首先,动态规划问题的一般形式就是求最值。动态规划其实是运筹...

  • 2022-02-19 动态规划高频题专题【1】

    动态规划基本类型 dp基础 背包问题 打家劫舍 股票问题 子序列问题 进阶动态规划 深入理解动态规划过程 定义dp...

  • 337. House Robber III

    key tips 动态规划返回两个状态 algorithm 1 尝试动态规划问题存在子问题结构,首先考虑动态规划在...

  • 动态规划(1)

    什么动态规划 动态规划是一种解决棘手问题的方法,它将问题分成小问题,并着手先解决这些小问题 动态规划的使用场景 g...

  • 算法3:动态规划

    5.动态规划5.1 什么是动态规划?5.2 自底向上的动态规划:5.3 自顶向下的动态规划5.4 0-1背包问题:...

  • LeetCode基础算法-动态规划

    LeetCode基础算法-动态规划 LeetCode 动态规划 动态规划的核心步骤: 查看大问题的最优解能否使用小...

  • 算法笔记(二)-动态规划问题

    引言:动态规划介绍 什么时候可以使用动态规划:求最优解问题的时候动态规划的两个主要问题:最优子结构和重叠子问题,一...

网友评论

      本文标题:动态规划问题

      本文链接:https://www.haomeiwen.com/subject/kyimuxtx.html