背包问题求方案数(二)

简介: AcWing算法提高课内容,本文讲解 动态规划

货币系统

题目要求

题目描述:

给你一个 n 种面值的货币系统,求组成面值为 m  的货币有多少种方案。

输入格式:

第一行,包含两个整数 n  和 m 。

接下来 n 行,每行包含一个整数,表示一种货币的面值。

输出格式:

共一行,包含一个整数,表示方案数。

数据范围:

n15,m3000

输入样例:

3 10
1
2
5

输出样例:

10

思路分析

f[i]代表恰好用了 i元钱的时候的方案数,注意本题会爆 i n t,需要开longlong

代码

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

货币系统

题目要求

题目描述:

image.png

输入格式:

image.png

输出格式:

输出文件共有 T 行,对于每组数据,输出一行一个正整数,表示所有与 ( n , a )等价的货币系统 ( m , b )  中,最小的 m 。

数据范围:

1n100,

1a[i]25000,

1T20

输入样例:

2 
4 
3 19 10 6 
5 
11 29 13 19 17 

输出样例:

2
5

思路分析

image.png

代码

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 25010;
int w[N];
int f[N];
int main()
{
    int T;
    cin >> T;
    while (T -- )
    {
        int n;
        cin >> n;
        for (int i = 1; i <= n; i ++ ) cin >> w[i];
        sort(w + 1, w + n + 1);
        memset(f, 0, sizeof f);
        f[0] = 1;
        int m = w[n];
        int res = 0;
        for (int i = 1; i <= n; i ++ )
        {
            if (!f[w[i]]) res ++;
            for (int j = w[i]; j <= m; j ++ )
                f[j] += f[j - w[i]];
        }
        cout << res << endl;
    }
    return 0;
}





目录
相关文章
|
2月前
|
C语言
末谈背包问题求具体方案
末谈背包问题求具体方案
|
6月前
每日一题 2006. 差的绝对值为 K 的数对数目
每日一题 2006. 差的绝对值为 K 的数对数目
|
7月前
|
算法 C语言
求解亲密数代码剖析
求解亲密数代码剖析
|
人工智能 算法 决策智能
动态规划之背包问题(01背包问题、完全背包问题、方案数填满型背包问题)
动态规划之背包问题(01背包问题、完全背包问题、方案数填满型背包问题)
266 1
|
算法 C++ Python
【每日算法Day 91】求解数组中出现次数超过1/3的那个数
【每日算法Day 91】求解数组中出现次数超过1/3的那个数
|
C++
(排列,选择类dp)(数论同余定理,同余运算)(以背包为母题)1214. 波动数列
(排列,选择类dp)(数论同余定理,同余运算)(以背包为母题)1214. 波动数列
98 0
|
C++
【力扣·每日一题】507. 完美数 (C++ 模拟 数的因子)
【力扣·每日一题】507. 完美数 (C++ 模拟 数的因子)
79 0
【力扣·每日一题】507. 完美数 (C++ 模拟 数的因子)
|
算法
背包问题求方案数(一)
AcWing算法提高课内容,本文讲解 动态规划
160 0
背包问题求方案数(一)