首页 > 其他分享 >代码随想录 - 背包问题

代码随想录 - 背包问题

时间:2022-12-26 21:55:05浏览次数:63  
标签:背包 15 int 代码 coins 随想录 vector 30 dp

    vector<int> weight = {1, 3, 4};
    vector<int> value = {15, 20, 30};
    int bagWeight = 4;
    // 01背包 如果先遍历背包 后遍历物品  那就是每个包只会装一个物品
    for(int j = bagWeight; j >= 0; j--) {
        for(int i = 0; i < weight.size(); i++) { // 遍历物品
         // 遍历背包容量
         if (j>=weight[i])
            dp[j] = max(dp[j], dp[j - weight[i]] + value[i]);
        }
        for (auto i : dp) cout << i << " ";
        cout << endl;
    }

上面的dp
0 0 0 0 30
0 0 0 20 30
0 0 15 20 30
0 15 15 20 30
0 15 15 20 30



完全背包的排列和组合的区别
https://programmercarl.com/0518.零钱兑换II.html#思路

class Solution {
public:
    vector<int> coins= {1, 2, 5};
    int amount = 5;

    int change(int amount, vector<int>& coins) {
        vector<int> dp(amount + 1, 0);
        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];
    }
};

上面是组合, dp是
1 1 0 0 0 0
1 1 1 0 0 0
1 1 1 1 0 0
1 1 1 1 1 0
1 1 1 1 1 1
1 1 2 1 1 1
1 1 2 2 1 1
1 1 2 2 3 1
1 1 2 2 3 3
1 1 2 2 3 4

class Solution {
public:
    vector<int> coins= {1, 2, 5};
    int amount = 5;

    int change(int amount, vector<int>& coins) {
        vector<int> dp(amount + 1, 0);
        dp[0] = 1;
        for (int j = 0; j <= amount; j++) { // 遍历背包容量
            for (int i = 0; i < coins.size(); i++) { // 遍历物品
                if (j - coins[i] >= 0) {
                    dp[j] += dp[j - coins[i]];
                    for (auto i : dp) cout << i << " ";
                    cout << endl;
                }
            }
        }
        return dp[amount];
    }
};

上面是排列,dp是
1 1 0 0 0 0
1 1 1 0 0 0
1 1 2 0 0 0
1 1 2 2 0 0
1 1 2 3 0 0
1 1 2 3 3 0
1 1 2 3 5 0
1 1 2 3 5 5
1 1 2 3 5 8
1 1 2 3 5 9

标签:背包,15,int,代码,coins,随想录,vector,30,dp
From: https://www.cnblogs.com/islch/p/17007005.html

相关文章

  • 【问题记录】【SpringBoot】启动不加载某个Starter,通过代码控制某个Starter加载
    1 问题描述最近在看Sa-Token,发现当引进Sa-Token的依赖包sa-token-spring-boot-starter,SpringBoot启动会自动加载Sa-Token的东西,我想通过某个配置或者代码来控制是否......
  • 代码随想录Day43
    多模块项目,引用其他模块,需要在pom文件里面依赖声明。用RestFul风格进行调用。  同时需要搞一个RestFul的配置类,加载到Spring中去。 ......
  • C语言冒泡排序代码演示
     //---------冒泡排序 voidbubble_sort(intarr[],intsz) {   //确定冒泡排序的趟数   inti=0;   for(i=0;i<sz-1;i++)   {......
  • win32编程 -- 通过空项目学习自动生成的代码框架
    将喜欢的东西留在身边,这就是努力的意义。。。---- 网易云热评一、新建空项目 二、右击项目查看属性,修改项目字符集的属性为多字节 三、右击项目,添加c++文件 四、添加代......
  • Python函数和代码复用
    文章目录​​一.函数的定义和使用​​​​1.函数的理解与定义​​​​(1).定义​​​​(2).作用​​​​(3).函数分类​​​​(3).基本语法​​​​2.函数的使用及调......
  • 如何优雅的写 css 代码
    CSS(全称CascadingStyleSheets,层叠样式表)为开发人员提供声明式的样式语言,是前端必备的技能之一,基于互联网上全面的资料和简单易懂的语法,CSS非常易于学习,但其知识点广泛......
  • 【电力系统】微电网两阶段鲁棒优化经济调度算法附matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • 如何写出优雅的Controller层代码
    前言一个完整的后端请求由4部分组成:接口地址(也就是URL地址)请求方式(一般就是get、set,当然还有put、delete)请求数据(request,有head跟body)响应数据(response)Co......
  • 局域网大文件上传详解及实例代码
    ​ 最近遇见一个需要上传百兆大文件的需求,调研了七牛和腾讯云的切片分段上传功能,因此在此整理前端大文件上传相关功能的实现。在某些业务中,大文件上传是一个比较重要的......
  • C++项目中编译部分C的代码
    在C++项目中如果真能编译部分C的代码,那么一定会用到一下语句#ifdef__cplusplusextern"C"{#endif/*...*/#ifdef__cplusplus}#endif下面......