51nod 1101 换零钱 完全背包的变型 动态规划
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了51nod 1101 换零钱 完全背包的变型 动态规划相关的知识,希望对你有一定的参考价值。
题目:
思路:
for(int i = 0;i < 13; i++){ for(int j = a[i];j <= n; j++){ dp[j] = (dp[j] + dp[j-a[i]])%mod; } }
a[i]:第i种硬币的面额。
dp[j]表示有前i种硬币,要求面额为j时,有多少种方案。
dp[j] = (dp[j] + dp[j-a[i]])%mod;
不装的情况+装的情况
代码:
#include <bits\\stdc++.h> using namespace std; const int mod = 1e9+7; int a[13] = {1,2,5,10,20,50,100,200,500,1000,2000,5000,10000}; int dp[100010]; int main(){ int n; cin >> n; dp[0] = 1; for(int i = 0;i < 13; i++){ for(int j = a[i];j <= n; j++){ dp[j] = (dp[j] + dp[j-a[i]])%mod; } } cout << dp[n] << endl; return 0; }
以上是关于51nod 1101 换零钱 完全背包的变型 动态规划的主要内容,如果未能解决你的问题,请参考以下文章
leetcode 322. 零钱兑换----完全背包套路解法详细再探
[M背包] lc518. 零钱兑换 II(完全背包+背包求方案数)