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

建设网站服务商h5app开发

建设网站服务商,h5app开发,md5加密网站,淘宝优惠劵网站怎么做70. 爬楼梯 &#xff08;进阶&#xff09; 题目描述&#xff1a; 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬至多m (1 < m < n)个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 注意&#xff1a;给定 n 是一个正整数。 输入描述&#xff1a;输入…

70. 爬楼梯 (进阶)

题目描述:
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬至多m (1 <= m < n)个台阶。你有多少种不同的方法可以爬到楼顶呢?
注意:给定 n 是一个正整数。
输入描述:输入共一行,包含两个正整数,分别表示n, m
输出描述:输出一个整数,表示爬到楼顶的方法数。
输入示例:3 2
输出示例:3
提示:
当 m = 2,n = 3 时,n = 3 这表示一共有三个台阶,m = 2 代表你每次可以爬一个台阶或者两个台阶。
此时你有三种方法可以爬到楼顶。
1 阶 + 1 阶 + 1 阶段
1 阶 + 2 阶
2 阶 + 1 阶

  1. 确定dp数组以及下标的含义
    dp[i]:爬到有i个台阶的楼顶,有dp[i]种方法。

  2. 确定递推公式
    在动态规划:494.目标和 (opens new window)、 动态规划:518.零钱兑换II (opens new window)、动态规划:377. 组合总和 Ⅳ (opens new window)中我们都讲过了,求装满背包有几种方法,递推公式一般都是dp[i] += dp[i - nums[j]];
    本题呢,dp[i]有几种来源,dp[i - 1],dp[i - 2],dp[i - 3] 等等,即:dp[i - j]
    那么递推公式为:dp[i] += dp[i - j]

  3. dp数组如何初始化
    既然递归公式是 dp[i] += dp[i - j],那么dp[0] 一定为1,dp[0]是递归中一切数值的基础所在,如果dp[0]是0的话,其他数值都是0了。
    下标非0的dp[i]初始化为0,因为dp[i]是靠dp[i-j]累计上来的,dp[i]本身为0这样才不会影响结果

  4. 确定遍历顺序
    这是背包里求排列问题,即:1、2 步 和 2、1 步都是上三个台阶,但是这两种方法不一样!
    所以需将target放在外循环,将nums放在内循环。
    每一步可以走多次,这是完全背包,内循环需要从前向后遍历。

  5. 举例来推导dp数组

import java.util.Scanner;public class Main{public static void main(String[] args){Scanner in=new Scanner(System.in);int n=in.nextInt();int m=in.nextInt();int[] dp=new int[n+1];dp[0]=1;for(int j=1;j<=n;j++){for(int i=0;i<=m;i++){if(j>=i){dp[j]=dp[j]+dp[j-i];}}}System.out.println(dp[n]);}
}

时间复杂度:O(mn)
空间复杂度:O(n)

322. 零钱兑换

在这里插入图片描述
在这里插入图片描述
动规五部曲分析如下:

  1. 确定dp数组以及下标的含义
    dp[j]:凑足总额为j所需钱币的最少个数为dp[j]

  2. 确定递推公式
    凑足总额为j - coins[i]的最少个数为dp[j - coins[i]],那么只需要加上一个钱币coins[i]即dp[j - coins[i]] + 1就是dp[j](考虑coins[i])
    所以dp[j] 要取所有 dp[j - coins[i]] + 1 中最小的。
    递推公式:dp[j] = min(dp[j - coins[i]] + 1, dp[j]);

  3. dp数组如何初始化
    首先凑足总金额为0所需钱币的个数一定是0,那么dp[0] = 0;
    其他下标对应的数值呢?
    考虑到递推公式的特性,dp[j]必须初始化为一个最大的数,否则就会在min(dp[j - coins[i]] + 1, dp[j])比较的过程中被初始值覆盖。
    所以下标非0的元素都是应该是最大值。

  4. 确定遍历顺序
    本题求钱币最小个数,那么钱币有顺序和没有顺序都可以,都不影响钱币的最小个数。
    所以本题并不强调集合是组合还是排列。
    综上所述,遍历顺序为:coins(物品)放在外循环,target(背包)在内循环。且内循环正序。

  5. 举例推导dp数组

class Solution {public int coinChange(int[] coins, int amount) {int max=Integer.MAX_VALUE;int[] dp=new int[amount+1];for(int i=0;i<dp.length;i++){dp[i]=max;}dp[0]=0;for(int i=0;i<coins.length;i++){for(int j=coins[i];j<=amount;j++){if(dp[j-coins[i]]!=max){//只有dp[j-coins[i]]不是初始最大值时,该位才有选择的必要dp[j]=Math.min(dp[j],dp[j-coins[i]]+1);}}}return dp[amount]==max?-1:dp[amount];}
}

时间复杂度: O(n * amount),其中 n 为 coins 的长度
空间复杂度: O(amount)

279.完全平方数

在这里插入图片描述
在这里插入图片描述

动规五部曲分析如下:

  1. 确定dp数组(dp table)以及下标的含义
    dp[j]:和为j的完全平方数的最少数量为dp[j]

  2. 确定递推公式
    dp[j] 可以由dp[j - i * i]推出, dp[j - i * i] + 1 便可以凑成dp[j]。
    此时我们要选择最小的dp[j],所以递推公式:dp[j] = min(dp[j - i * i] + 1, dp[j]);

  3. dp数组如何初始化
    dp[0]表示 和为0的完全平方数的最小数量,那么dp[0]一定是0。
    有同学问题,那0 * 0 也算是一种啊,为啥dp[0] 就是 0呢?
    看题目描述,找到若干个完全平方数(比如 1, 4, 9, 16, …),题目描述中可没说要从0开始,dp[0]=0完全是为了递推公式。
    非0下标的dp[j]应该是多少呢?
    从递归公式dp[j] = min(dp[j - i * i] + 1, dp[j]);中可以看出每次dp[j]都要选最小的,所以非0下标的dp[j]一定要初始为最大值,这样dp[j]在递推的时候才不会被初始值覆盖。

  4. 确定遍历顺序
    我们知道这是完全背包,
    如果求组合数就是外层for循环遍历物品,内层for遍历背包。
    如果求排列数就是外层for遍历背包,内层for循环遍历物品。

class Solution {public int numSquares(int n) {int max = Integer.MAX_VALUE;int[] dp = new int[n + 1];for (int j = 0; j <= n; j++) {//初始化dp[j] = max;}dp[0]=0;for(int i=1;i*i<=n;i++){int weight=i*i;for(int j=weight;j<=n;j++){dp[j]=Math.min(dp[j],dp[j-weight]+1);}}return dp[n];}
}

时间复杂度: O(n * √n)
空间复杂度: O(n)

http://www.yayakq.cn/news/991845/

相关文章:

  • 网站经常被攻击一个虚拟空间可以放几个网站
  • 大连开发区规划建设局网站北京网站制作招聘
  • 广西建设厅办事大厅网站360网站提交入口地址
  • 南康网站建设南康wordpress调用插件吗
  • 自己做的小网站如何发布建设门户网站的请示
  • 免费自己制作网站教程做关键词优化需要修改网站标题
  • 网站做不做双解析长尾关键词挖掘词
  • 免费阅读网站软件asp做网站基本过程
  • 汕头好的建站网站没有网站可以做seo吗
  • 商城网站设计注意什么企业营销网站模板
  • 网站怎么在百度做推广方案意大利做包招工的网站
  • 做设计开店的网站网站超大文件上传
  • 英文网站建设的原因用天地图做网站
  • 苏州网站建设基础型新手怎么学代码编程
  • 部门将网站建设的需求电子商务网站运营与管理
  • 自助网站建设怎么建设抖音代运营海报
  • 旅游网站首页设计公司网站开发人员的的工资多少钱
  • 网站地图怎么使用哪些平台可以做推广
  • 手机装修设计软件appseo自学网免费
  • 平顶山住房和城乡建设局网站如何创立网站 优帮云
  • 网站空间指的是什么意思楚雄网站制作
  • 招标网站开发上海建设工程咨询网查询
  • 使用pycharm网站开发建设金融网站哪家好
  • 福州城乡建设发展总公司官方网站网站美工要求
  • 苏州知名网站制作美团网站开发
  • 建立网站最好的模板旅游网站开发的流程
  • 做网站开发有哪些优点呢H5响应式网站示例
  • 自己做简单的网站wordpress首页位置
  • 湖南网站制作电话搜索敏感词后很多网站打不开了
  • 备用网站域名营销策划的重要性