代码随想录算法训练营29期|day50 任务以及具体任务

news2024/11/29 10:47:02

第九章 动态规划part07

  •  70. 爬楼梯 (进阶)
    import java.util.Scanner;
    class climbStairs{
        public static void main(String [] args){
            Scanner sc = new Scanner(System.in);
            int m, n;
            while (sc.hasNextInt()) {
                // 从键盘输入参数,中间用空格隔开
                n = sc.nextInt();
                m = sc.nextInt();
    
                // 求排列问题,先遍历背包再遍历物品
                int[] dp = new int[n + 1];
                dp[0] = 1;
                for (int j = 1; j <= n; j++) {
                    for (int i = 1; i <= m; i++) {
                        if (j - i >= 0) dp[j] += dp[j - i];
                    }
                }
                System.out.println(dp[n]);
            }
        }
    }

    思路:该题和背包问题一样,n为背包大小,1到m为物品的大小,要求装满背包有几种方法,而且是可以重复取物品。

  •  322. 零钱兑换 
    class Solution {
        public int coinChange(int[] coins, int amount) {
            int max = Integer.MAX_VALUE;
            int[] dp = new int[amount + 1];
            //初始化dp数组为最大值
            for (int j = 0; j < dp.length; j++) {
                dp[j] = max;
            }
            //当金额为0时需要的硬币数目为0
            dp[0] = 0;
            for (int i = 0; i < coins.length; i++) {
                //正序遍历:完全背包每个硬币可以选择多次
                for (int j = coins[i]; j <= amount; j++) {
                    //只有dp[j-coins[i]]不是初始最大值时,该位才有选择的必要
                    if (dp[j - coins[i]] != max) {
                        //选择硬币数目最小的情况
                        dp[j] = Math.min(dp[j], dp[j - coins[i]] + 1);
                    }
                }
            }
            return dp[amount] == max ? -1 : dp[amount];
        }
    }

    思路:该题是完全背包问题,dp数组表示装满j需要的最少物品。该题不需要考虑组合或者排序,先遍历背包或者物品都可以。

  •  279.完全平方数
    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;
            }
    	//如果不想要寫for-loop填充數組的話,也可以用JAVA內建的Arrays.fill()函數。
    	//Arrays.fill(dp, Integer.MAX_VALUE);
    	
            //当和为0时,组合的个数为0
            dp[0] = 0;
            // 遍历物品
            for (int i = 1; i * i <= n; i++) {
                // 遍历背包
                for (int j = i * i; j <= n; j++) {
                    //if (dp[j - i * i] != max) {
                        dp[j] = Math.min(dp[j], dp[j - i * i] + 1);
                    //}
    		//不需要這個if statement,因爲在完全平方數這一題不會有"湊不成"的狀況發生( 一定可以用"1"來組成任何一個n),故comment掉這個if statement。
                }
            }
            return dp[n];
        }
    }
    
    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;
            }
            // 当和为0时,组合的个数为0
            dp[0] = 0;
            // 遍历背包
            for (int j = 1; j <= n; j++) {
                // 遍历物品
                for (int i = 1; i * i <= j; i++) {
                    dp[j] = Math.min(dp[j], dp[j - i * i] + 1);
                }
            }
            return dp[n];
        }
    }

    思路:这道题和上一题思路一样,都是要求最小组成数,只不过是物品发生了变化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1447957.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

简单工厂模式-Simple Factory Pattern

原文地址:https://jaune162.blog/design-pattern/simple-factory-pattern/ 简介 简单工厂模式是一种非常常用的设计模式,但是并不属于GoF中的23种设计模式。简单设计模式有很多种实现方式。 本文我们就来讨论简单工厂模式的实现方式,以及如何借助Spring实现一个扩展性很好…

寒假作业-day11

1>编程实现二维数组的杨辉三角 2>编程实现二维数组计算每一行的和以及列和 3>编程实现二维数计算第二大值 代码&#xff1a; #include<stdio.h> #include<stdlib.h> #include<string.h>void yanghui(int n){int arr[n][n];for (int i 0; i <…

分享个CSDN自定义模块模板

在开了会员或升级为博客专家后&#xff0c;才有这个自定义模块的权限 当然这也是为了有很多粉丝的博主更方便的推广一些业务场景展示的橱窗 自定义模块管理 下面就列下我使用的自定义模块相关的代码 <marquee><b><font color"#8A2BE2">不</…

在git bash中可以提交代码,但是在android studio中提交代码就会报错

出现这个错误 error: unable to read askpass response from ‘C:\Users…\AppData\Local\Google\AndroidStudio2021.2\tmp\intellij-git-askpass-local.sh’ bash: line 1: /dev/tty: No such device or address 勾选git的use credential helper选项再提交就行了

使用Word Embedding+Keras进行自然语言处理NLP

目录 介绍&#xff1a; one-hot&#xff1a; pad_sequences: 建模: 介绍&#xff1a; Word Embedding是一种将单词表示为低维稠密向量的技术。它通过学习单词在文本中的上下文关系&#xff0c;将其映射到一个连续的向量空间中。在这个向量空间中&#xff0c;相似的单词在空间…

ChatGPT高效提问—prompt实践(漏洞风险分析-重构建议-识别内存泄漏)

ChatGPT高效提问—prompt实践&#xff08;漏洞风险分析-重构建议-识别内存泄漏&#xff09; 1.1 漏洞和风险分析 ChatGPT还可以帮助开发人员预测代码的潜在风险&#xff0c;识别其中的安全漏洞&#xff0c;而不必先运行它&#xff0c;这可以让开发人员及早发现错误&#xff0…

Docker-现代化应用部署的利器

一、容器部署的发展 今天我们来说说容器部署。我们知道容器部署的发展大致分三个阶段&#xff0c;下面来介绍一下不同阶段的部署方式的优缺点 物理机部署 优点是可以提供更高的性能、资源控制&#xff0c;也可以提供更好的数据隔离和安全性&#xff0c;因为不同的应用程序运行在…

降准是什么意思?降准对股市有哪些影响?

降准是什么意思 降准&#xff0c;全称为“中央银行调低法定存款准备率”&#xff0c;是指中央银行降低法定存款准备率&#xff0c;以增加银行的可用资金&#xff0c;从而增加市场的流动性。 具体来说&#xff0c;存款准备金是商业银行为了应对储户取款和清算时准备的资金&…

基于FPGA的I2C接口控制器(包含单字节和多字节读写)

1、概括 前文对IIC的时序做了详细的讲解&#xff0c;还有不懂的可以获取TI的IIC数据手册查看原理。通过手册需要知道的是IIC读、写数据都是以字节为单位&#xff0c;每次操作后接收方都需要进行应答。主机向从机写入数据后&#xff0c;从机接收数据&#xff0c;需要把总线拉低来…

尚硅谷最新Node.js 学习笔记(一)

目录 一、Nodejs入门 1.1、为什么要学习Nodejs&#xff1f; 1.2、Nodejs是什么&#xff1f; 1.3、Nodejs的作用 1.4、Nodejs安装 1.5、Nodejs初体验 1.6、编码注意事项 二、Buffer&#xff08;缓冲器&#xff09; 2.1、概念 2.2、特点 2.3、使用 创建Buffer Buffe…

深刻反思现代化进程:20世纪与21世纪的比较分析及东西方思想家的贡献

深刻反思现代化进程&#xff1a;20世纪与21世纪的比较分析及东西方思想家的贡献 摘要&#xff1a;随着人类社会的快速发展&#xff0c;现代化已成为全球范围内的普遍追求。然而&#xff0c;20世纪至21世纪的现代化进程并非一帆风顺&#xff0c;它伴随着环境破坏、社会不平等和文…

Swift Combine 使用 flatMap 和 catch错误处理 从入门到精通十三

Combine 系列 Swift Combine 从入门到精通一Swift Combine 发布者订阅者操作者 从入门到精通二Swift Combine 管道 从入门到精通三Swift Combine 发布者publisher的生命周期 从入门到精通四Swift Combine 操作符operations和Subjects发布者的生命周期 从入门到精通五Swift Com…

vue3 之 商城项目—购物车

购物车业务逻辑梳理拆解 1️⃣整个购物车的实现分为两个大分支&#xff0c;本地购物车操作和接口购物车操作 2️⃣由于购物车数据的特殊性&#xff0c;采取Pinia管理购物车列表数据并添加持久话缓存 本地购物车—加入购物车实现 stores/cartStore.js // 封装购物车模块 imp…

前端秘法基础式(HTML)(第一卷)

目录 一.img标签 1.src属性 2.alt/title/width/height/border属性 二.a标签 1.href属性 2.target属性 三.表格/列表标签 1.表格标签 ​编辑 2.列表标签 2.1无序列表 2.2有序列表 一.img标签 1.src属性 img标签必须搭配src来使用,src用来指定路径 注意这里的src不…

【王道数据结构】【chapter5树与二叉树】【P158t10】

已知二叉树以二叉链表存储&#xff0c;编写算法完成&#xff1a;对于树种每个元素值为x的结点&#xff0c;删除以它为根的子树&#xff0c;并释放相应的空间 #include <iostream> #include <queue> typedef struct treenode{char data;struct treenode *left;struc…

CorelDRAW2024国内专业个人免费版下载

CorelDRAW是一款屡获殊荣的图形和图像编辑软件&#xff0c;包含两个绘图应用程序&#xff1a;一个用于矢量图及页面设计&#xff0c;另一个用于图像编辑。自1989年进入中国市场以来&#xff0c;CorelDRAW不断推出新的版本和功能&#xff0c;以满足用户不断变化的需求。 CorelD…

安装 NVIDIA Chat with RTX

安装 NVIDIA Chat with RTX 0. NVIDIA Chat with RTX 是什么&#xff1f;1. 安装 NVIDIA Chat with RTX2. 使用 NVIDIA Chat with RTX3. NVIDIA Chat with RTX 下载地址 0. NVIDIA Chat with RTX 是什么&#xff1f; Chat With RTX 是一款演示应用程序&#xff0c;可让您个性化…

2.8:Maefile、计算单词个数、判断文件类型、单词逆置

1.有main.c&#xff0c;test.c&#xff0c;test1.c&#xff0c;创建Makefile 程序代码&#xff1a; Makefile: 1 CCgcc2 EXEhello3 OBJS$(patsubst %.c,%.o,$(wildcard *.c))4 CFLAGS-c -o5 all:$(EXE)6 7 #hello依赖test.o main.o8 $(EXE):$(OBJS)9 $(CC) $^ -o $10 …

输出用“*”组成的X形图案。

输出用“*”组成的X形图案 输入描述&#xff1a; 多组输入&#xff0c;一个整数&#xff08;2~20&#xff09;&#xff0c;表示输出的行数&#xff0c;也表示组成“X”的反斜线和正斜线的长度。 输出描述&#xff1a; 针对每行输入&#xff0c;输出用“*”组成的X形图案。 …

波奇学Linux:文件缓冲区

问题导入 文件流输出直接向显示器和重定向文件有不一样的表现 分别向显示器文件输出四个语句&#xff0c;最后fork创建子进程。 当程序运行时和程序重定向到文件中&#xff0c;输出的内容不一样。 重定向时c库函数&#xff08;printf,fprintf,fwrite&#xff09;调用了两次&…