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

算法题——动态规划

509.斐波那契数列

递归的思路很简单,首先定义一个方法func,每次里面递归调用func(x-1),func(x-2),递归出口是func(0)=0,func(1)=1

class Solution {public int fib(int n) {if(n==0) return 0;if(n==1) return 1;return fib(n-1)+fib(n-2);}
}

但是递归的性能很差,因为需要层层调用,考虑用空间换时间,用一个一维数组记录每一个函数计算的中间值,这样就避免了重复计算

动态规划五步:

  1. 确定dp数组(dp table)以及下标的含义
  2. 确定递推公式
  3. dp数组如何初始化
  4. 确定遍历顺序
  5. 举例推导dp数组
class Solution {public int fib(int n) {if(n<=1) return n;int[] dp = new int[n+1]; //dp[i]表示第i个数的斐波那契数dp[0] = 0;dp[1] = 1; //dp数组初始值for(int i=2;i<n+1;i++){dp[i] = dp[i-1] + dp[i-2]; //状态转移方程}return dp[n];}
}

70.爬楼梯

class Solution {public int climbStairs(int n) {if(n<=2) return n;int[] dp = new int[n+1];dp[1] = 1;dp[2] = 2;for(int i=3;i<n+1;i++){dp[i] = dp[i-1] + dp[i-2];}return dp[n];}
}

62.不同路径

class Solution {public int uniquePaths(int m, int n) {int[][] dp = new int[m+1][n+1];for(int j=1;j<=n;j++){dp[1][j] = 1;}for(int i=2;i<=m;i++){dp[i][1] = 1;}for(int i=2;i<=m;i++){for(int j=2;j<=n;j++){dp[i][j] = dp[i-1][j] + dp[i][j-1];}}return dp[m][n];}
}

http://www.dtcms.com/a/508069.html

相关文章:

  • asp网站模板如何修改有些人做网站不用钱的,对吗?
  • 网站关键词用热门的还是冷门画册设计免费模板
  • Java的代码块介绍与快速入门
  • wordpress wordpress获取当前页面的父类id外贸seo推广公司
  • 企业建站 炫酷模板网站上线方案
  • 学习哈希表的基本结构
  • 学习Python 04
  • AJAX的学习
  • Python爬虫实战:淘宝模拟人工搜索关键词采集商品列表
  • VB与PyCharm——工具的选择与编程的初心
  • 网站制作公司价格网站策划与运营
  • 旅游网站建设的费用明细路桥区商用营销型网站建设
  • 五大工作流自动化平台实测对比:从执行到定义的差距
  • 实战Kaggle比赛:图像分类 (CIFAR-10) - 用PyTorch挑战经典计算机视觉任务
  • 做网站需要会语言吗wordpress 淘宝
  • 电子商务与网站建设实践论文更改wordpress管理地址
  • 正点原子RK3568学习日志12-注册字符设备
  • zookeeper简介
  • 注册中心对比 -- eureka、nacos、consul、zookeeper、redis过期key
  • php 茶叶网站网页qq登录保护怎么关闭
  • 做南美生意做什么网站好网站维护需要多久时间
  • MFC 在list右键弹出菜单栏功能 ,在list控件自定义绘制按钮控件
  • 网站设计中的事件是什么宝钢工程建设有限公司网站
  • vue3 之 基础+核心概念+上手技巧
  • 兰州网站建设推荐q479185700顶上北京邢台企业商会网站
  • TypeScript基础入门与数据类型
  • PHP面试题——情景应用
  • 看门狗设置
  • 部门网站建设总结网上商城网站建设
  • 做网站服务器哪种好外贸企业网站推广方案