给你一个n种面值的货币系统,求组成面值为m的货币有多少种方案。样例:设n=3,m=10,要求输入和输出的格式如下:
输入
第一行两个整数n,m(m<=5000)
以下n行,每行一个整数,第i+1行为第i种货币的面值
以下n行,每行一个整数,第i+1行为第i种货币的面值
输出
一个整数,为方案数
样例输入
3 10
1
2
5样例输出
10#include<stdio.h> #include<string.h> int a[10005]; long long f[10005]; int main(){ int n, m, i, j; while(scanf("%d%d", &n, &m) != EOF){ memset(f, 0, sizeof(f)); f[0] = 1; for(i = 1; i <= n; i++) scanf("%d", &a[i]); for(i = 1; i <= n; i++) for(j = a[i]; j <= m; j++) f[j] += f[j - a[i]]; printf("%lld\n", f[m]); } return 0; }
本文介绍了一个使用动态规划解决的问题——给定不同面额的货币,计算组成特定总金额的方法数。通过逐步迭代更新方案数量,最终得出所有可能的组合。
484

被折叠的 条评论
为什么被折叠?



