完全背包相关题

news2025/1/5 12:58:34

 

class Solution {
public:
    int dp[5005];
    int change(int amount, vector<int>& coins) {
            //dp[j]表示金额为j时的组合数
            dp[0]=1;
            for(int i=0;i<coins.size();i++)
            {
                for(int j=coins[i];j<=amount;j++){
                    dp[j]+=dp[j-coins[i]];
                }
            }
            return dp[amount];
            
    }
};

 

题解:如果求排列数的话,首先遍历背包,然后再遍历物品

class Solution {
public:
    int dp[5005];
    int change(int amount, vector<int>& coins) {
            //dp[j]表示金额为j时的组合数
            dp[0]=1;
            for(int i=0;i<coins.size();i++)
            {
                for(int j=coins[i];j<=amount;j++){
                    if(j>=coins[i])
                    dp[j]+=dp[j-coins[i]];
                }
            }
            return dp[amount];
            
    }
};

 

class Solution {
public:
    int dp[10005];
    int coinChange(vector<int>& coins, int amount) {
        //dp[i]表示组成金额i需要的最小硬币数
        int max_val=0x3f3f3f3f;
        memset(dp,max_val,sizeof(dp));
        dp[0]=0;
        for(int i=0;i<coins.size();i++){
            for(int j=coins[i];j<=amount;j++)
            {
                dp[j]=min(dp[j],dp[j-coins[i]]+1);
            }
        }
        if(dp[amount]!=max_val)
        {
                 return dp[amount];
        }
        return -1;
       
    }
};

 

class Solution {
public:
    int dp[10005];
    int numSquares(int n) {
           //dp[i]表示和为i的最小完全平方数
        int max_bal=0x3f3f3f3f;
        memset(dp,max_bal,sizeof(dp));
        dp[0]=0;
        int w=sqrt(n);
        if(w*w==n)
        {
            return 1;
        }
        else{
            for(int i=1;i<=w;i++)
            {
                for(int j=i*i;j<=n;j++)
                {
                    dp[j]=min(dp[j],dp[j-i*i]+1);
                }
            }
            return dp[n];
        }
    }
};

 

class Solution {
public:
    bool wordBreak(string s, vector<string>& wordDict) {
        //dp[j]表示前j个字符是否出现
        int l=s.length();
        vector<bool>dp(l+1,false);
         set<string>se;
         for(int i=0;i<wordDict.size();i++)
         {
             se.insert(wordDict[i]);
         }
         dp[0]=true;
         for(int i=1;i<=s.length();i++)
         {
             for(int j=0;j<i;j++)
             {
                
                 if(dp[j] && se.count(s.substr(j,i-j)))
                 {
                   
                     dp[i]=true;
                      break;
                 }
                         
             }
         }

        
        return dp[l];
    }
};

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

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

相关文章

Pandas库:从入门到应用(四)--数学函数

一、测试数据 import numpy as np import pandas as pd## 5行3列 0到100的数据 df pd.DataFrame(datanp.random.randint(0, 100, size(5, 3))) df二、基础聚合函数 2.1、count()函数 df.count() # 统计每列的行数(非空),默认axis0 df.count(axis1) # 统计每行的列数(非空)…

mysql的主键选择

一.没有定义主键有什么问题 如果定义了主键&#xff0c;那么InnoDB会使用主键作为聚簇索引如果没有定义主键&#xff0c;那么会使用第一非空的唯一索引&#xff08;NOT NULL and UNIQUE INDEX&#xff09;作为聚簇索引如果既没有主键也找不到合适的非空索引&#xff0c;那么In…

案例研究|DataEase助力亚加达智能医学实验室场景BI展示

深圳市亚加达信息技术有限公司&#xff08;以下简称为亚加达&#xff09;成立于2018年&#xff0c;是一家专注于医疗信息系统研发的高科技公司&#xff0c;隶属于亚辉龙集团。 亚加达深入理解医疗实验室业务和日常工作流程&#xff0c;通过物联网和大数据技术&#xff0c;基于…

数据库概述和DDL语句(学会并使用数据库day1)

数据库概述和DDL语句&#xff08;day1&#xff09; 一、数据库概述概念数据库的集中式控制有什么优点数据库分类mysql数据库mysql简介基本术语数据表的组成 数据库管理系统数据库管理系统、数据库和表的关系 二、SQL的概念三、SQL语句分类1、SQL语句被分为四大类2、MySQL的语法…

电脑上怎么进行pdf合并免费?看看这种方法

电脑上怎么进行pdf合并免费&#xff1f;在日常工作中&#xff0c;我们经常需要将多个PDF文档合并成一个文件&#xff0c;以方便管理和传输。如果你正在寻找一种简单易用的PDF合并工具&#xff0c;那么接下来就给大家介绍一种简单好用的合并方法。 【迅捷PDF转换器】是一款PDF转…

godot引擎c++源码深度解析系列一

许久没有使用c开发过项目了&#xff0c;如果按照此时单位的入职要求&#xff0c;必须拥有项目经验的话&#xff0c;那我就得回到十多年前&#xff0c;大学的时代&#xff0c;哪个时候真好&#xff0c;电脑没有这么普及&#xff0c;手机没有这么智能&#xff0c;网络没有这么发达…

01背包相关题

题解&#xff1a;dp[j]表示目标和为j时的最大组合种数 class Solution { public:int dp[1005];int findTargetSumWays(vector<int>& nums, int target) {int val;int sum0;for(int i0;i<nums.size();i){sumnums[i];}int wsumtarget;if(w%21){return 0;}else{valw…

重磅来袭 | 2023数字供应链安全大会邀请函(DSS 2023)

2023数字供应链安全大会&#xff08;DSS 2023&#xff09;将于8月10日在北京国家会议中心隆重开幕。本次大会由悬镜安全主办&#xff0c;ISC互联网安全大会组委会、中国软件评测中心&#xff08;工业和信息化部软件与集成电路促进中心&#xff09;、中国信息通信研究院云计算与…

基于IMX6ULL的智能车载终端项目(代码开源)

前言&#xff1a;本文为手把手教学智能车载终端项目&#xff08;LinuxQT&#xff09;&#xff0c;该项目是综合性非常强的 Linux 系列项目&#xff01;项目核心板使用 NXP 的 IMX6ULL 作为 CPU&#xff0c;整体实现了简化版本的车载终端功能需求。项目可以学习的点非常多&#…

物联网网关模块可以带几台plc设备吗?可以接几个modbus设备?

随着物联网技术的快速发展&#xff0c;物联网网关模块已经成为了实现物联网应用的重要工具。很多客户在选择物联网网关模块时想了解物联网网关模块的设备接入能力&#xff0c;一个物联网网关模块可以带几台PLC设备&#xff1f;可以接几个Modbus设备&#xff1f; 物联网网关模块…

leetcode 50. Pow(x, n)(x的n次方)

求x的n次方。 思路&#xff1a; 第一个想到的思路是x和它自己乘n次&#xff0c; 但是这样做会面临一些问题&#xff1a; 如果是简单的n很小的情况还好&#xff0c;但是可以看到n的取值横跨整个整数范围&#xff0c; 如果n非常大&#xff0c;一次一次乘x效率低是其一。 一般来…

十、数据结构——链式队列

数据结构中的链式队列 目录 一、链式队列的定义 二、链式队列的实现 三、链式队列的基本操作 ①初始化 ②判空 ③入队 ④出队 ⑤获取长度 ⑥打印 四、循环队列的应用 五、总结 六、全部代码 七、结果 在数据结构中&#xff0c;队列&#xff08;Queue&#xff09;是一种常见…

【MySQL】存储引擎(六)

&#x1f697;MySQL学习第六站~ &#x1f6a9;本文已收录至专栏&#xff1a;MySQL通关路 ❤️文末附全文思维导图&#xff0c;感谢各位点赞收藏支持~ 一.引入 大家可能没有听说过存储引擎&#xff0c;但是一定听过引擎这个词&#xff0c;引擎就是发动机&#xff0c;是一个机器…

PCB封装设计指导(十五)验证封装的正确性

PCB封装设计指导(十五)验证封装的正确性 封装建立好之后,我们需要验证封装是否能够正常的放入PCB文件中,最好最直接的办法就是直接放入PCB中来验证。 具体操作如下 任意新建一个空白的PCB文件点击File 选择NEW

搭建关键字驱动自动化测试框架

前言 上篇文章我们已经了解到了数据驱动自动化测试框架是如何构建和驱动测试的&#xff01;那么这篇文章我们将了解关键字驱动测试又是如何驱动自动化测试完成整个测试过程的。关键字驱动框架是一种功能自动化测试框架&#xff0c;它也被称为表格驱动测试或者基于动作字的测试…

一站式解决方案:Qt 跨平台开发灵活可靠

Qt 是一种跨平台开发工具&#xff0c;为开发者提供了一站式解决方案。无论您的项目目标是 Windows、Linux、macOS、嵌入式系统还是移动平台&#xff0c;Qt 都能胜任。这种跨平台的特性不仅节省开支&#xff0c;还推动了战略的快速落地。 适用范围广泛&#xff1a;Qt 可在多种操…

从新手到专业人士:探索 C++ STL 以获得终极性能

探索 C STL 以获得终极性能 博主简介一、引言二、C STL 简介2.1、STL 是什么&#xff1f;2.2、STL 中的常用组件2.3、STL 的优点 三、入门指南&#xff1a;了解基本概念和用法3.1、容器&#xff1a;vector、list、deque、set、map 等3.2、算法&#xff1a;查找、排序、遍历等3.…

C# IO FileStream流(一)使用整理

一、C# IO 文件流&#xff0c;常用操作整理 来自其他开发者的整理&#xff1a; 文件操作常用相关类 1)Directory //操作目录&#xff08;文件夹&#xff09;&#xff0c;静态类。2)Path//静态类&#xff0c;对文件或目录的路径进行操作&#xff08;很方便&#xff09;【字符…

解决Element-Plus中Swtich @change自动被触发的问题

如图所示 这个switchChange事件在初始化的时候会被自动触发 烦得很 解决方法 如图所示 第471行 通过判断是否还有其它某元素再往下执行 如果你有其它方法 请你在评论区教我下哈 3q

智慧园区楼宇合集 | 图扑数字孪生管控系统

智慧园区是指将物联网、大数据、人工智能等技术应用于传统建筑和基础设施&#xff0c;以实现对园区的全面监控、管理和服务的一种建筑形态。通过将园区内设备、设施和系统联网&#xff0c;实现数据的传输、共享和响应&#xff0c;提高园区的管理效率和运营效益&#xff0c;为居…