文章目录

  • 0. 前言
  • 1. 01背包求方案数

0. 前言

相关:

  • [背包] 背包问题算法模板(模板)

1. 01背包求方案数

278. 数字组合


M 看作背包容量,每个数看成一个物品,Ai 看成是体积。本题即转化为:求出总体积恰好是 M 的方案数。

思路:

  • 状态表示:

    • f[i,j]:所有只从前 i 个物品中选,且总体积不超过 j 的方案的数量
  • 状态计算:
    • 和 01 背包一致,根据最后一步第 i 个物品选还是不选分类
    • 不包含物品 i 的所有选法:
      • f[i][j] = f[i-1][j]
    • 包含物品 i 的所有选法
      • f[i][j] = f[i-1][j-vi]
    • 状态转移方程: f[i][j] = f[i-1][j]+f[i-1][j-vi]
  • 状态初始化及答案:
    • f[0]=1,初始 M 为 0 时,一个不选也是一种方案,其它均为 0
    • 答案即为 f[m]

一维代码:

#include <iostream>
#include <algorithm>using namespace std;const int N = 10005;int n, m;
int f[N];int main() {cin >> n >> m;f[0] = 1;for (int i = 0; i < n; ++i) {int v;cin >> v;for (int j = m; j >= v; --j) f[j] += f[j - v];}cout << f[m] << endl;return 0;
}

二维代码:

#include <iostream>
#include <algorithm>using namespace std;const int N = 10005;int n, m;
int v[N];
int f[N][N];int main() {cin >> n >> m;f[0][0] = 1;for (int i = 1; i <= n; ++i) cin >> v[i];for (int i = 1; i <= n; ++i) {for (int j = 0; j <= m; ++j) {f[i][j] = f[i - 1][j];if (j >= v[i]) f[i][j] += f[i - 1][j - v[i]];}}cout << f[n][m] << endl;return 0;
}

[01背包] 数字组合(01背包+求方案数)相关推荐

  1. 01背包,完全背包,多重背包,混合背包,二维费用背包,分组背包,背包问题求方案数

    1 01背包问题 有 NNN 件物品和一个容量是 VVV 的背包.每件物品只能使用 一次. 第 iii 件物品的体积是 viv_ivi​,价值是 wiw_iwi​.求解将哪些物品装入背包,可使这些物品 ...

  2. [01背包] 背包问题求具体方案(01背包+求方案数+思维)

    文章目录 0. 前言 1. 01背包+求方案数+思维 0. 前言 相关: [背包] 背包问题算法模板(模板) 1. 01背包+求方案数+思维 12. 背包问题求具体方案 求方案数也是背包问题.dp 的 ...

  3. 动态规划之如何将问题抽象转化为0-1背包问题(详解利用动态规划求方案数)

    ⭐️前面的话⭐️ 本篇文章介绍如何对问题抽象转化成0-1背包问题求解和运用0-1背包求方案数.

  4. [完全背包] 货币系统(完全背包+求方案数)

    文章目录 0. 前言 1. 完全背包+求方案数+思维 0. 前言 相关: [背包] 背包问题算法模板(模板) 强相关: [完全背包] 买书(完全背包+裸题) [完全背包] 货币系统(完全背包+求方案数 ...

  5. 7-30 找单词——多重背包求方案数

    假设有x1个字母A, x2个字母B,- x26个字母Z,同时假设字母A的价值为1,字母B的价值为2,- 字母Z的价值为26.那么,对于给定的字母,可以找到多少价值<=50的单词呢?单词的价值就是 ...

  6. 经典背包问题3——背包问题求方案数 、背包问题求具体方案

    经典背包问题3--背包问题求方案数 .背包问题求具体方案 1. 背包问题求方案数 2. 背包问题求具体方案 1. 背包问题求方案数 有 N 件物品和一个容量是 V的背包.每件物品只能使用一次. 第 i ...

  7. 观光(最短路求方案数2)

    题目描述 "您的个人假期"旅行社组织了一次比荷卢经济联盟的巴士之旅. 比荷卢经济联盟有很多公交线路. 每天公共汽车都会从一座城市开往另一座城市. 沿途汽车可能会在一些城市(零或更多 ...

  8. 物资调度(01背包+求方案数)

    物资调度 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 某地区发生了地震,灾区已经非常困难,灾民急需一些帐篷.衣物.食品和血浆等物资.可通往灾区的道路到处都是塌方,70 ...

  9. 【01背包求方案数模板】洛谷 P1164 小A点菜

    洛谷 P1164 小A点菜 https://www.luogu.org/problemnew/show/P1164 题目背景 uim神犇拿到了uoi的ra(镭牌)后,立刻拉着基友小A到了一家--餐馆, ...

最新文章

  1. 收藏 | 28个R语言绘图的实用程序包!
  2. 湖南网络推广教大家如何“挽回”网站被降权的排名和权重?
  3. oralce10g中约束与列属性NULLABLE的关系
  4. maven打包pom.xml备忘
  5. Angular @Hostbinding工作原理
  6. 七0二所与江南计算机研究所,江南大学:一所被低估的“211”大学,2个A+学科,丝毫不输985...
  7. java图片格式转化(例如jpg格式转化png)
  8. Windows查看端口占用
  9. csv去重 python_python去重函数是什么
  10. 北漂九年 ,雷军终于买房了:壕掷52亿元
  11. KVM 虚拟化技术(理论详解+实战)
  12. 如何正确学习软件工程
  13. 各国语言缩写以及国际域名缩写
  14. python中tab键_python中tab键指的是什么意思
  15. python导出_Python脚本导出为exe程序
  16. 计算机大赛的英语怎么说,最全英语奖项 比赛名称翻译.doc
  17. 神州数码交换机CS6200命令学习(三)
  18. vue使用JavaScript的Number方法或正则表达式进行表单验证,判断值是否为数字(包括整数和小数),验证值只能为小数点后一位
  19. 3、Kubernetes的基本使用
  20. 三翼鸟,从做家务开始打破家居生活的“标准范式”

热门文章

  1. html自动跳转源码,网页自动跳转代码收集
  2. PTA-L2-028 秀恩爱分得快 (25分)
  3. 怎样真正确保教师工资待遇 丹比奴
  4. 与快乐和成功同行,Google 与您相约 ChinaJoy 2019
  5. CV中,传统视觉算法 vs 深度学习算法
  6. 出现一次的数字(找单身狗)
  7. 贷款计算器我的压力山大
  8. Windows VBS服务的打开与关闭
  9. 哔哩哔哩登录cookie,1080+
  10. 《人月神话》译文修订明细(6)-读者可以对照修改