货币系统
Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other)
Total Submission(s) : 16 Accepted Submission(s) : 6
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
给你一个n种面值的货币系统,求组成面值为m的货币有多少种方案。
Input
输入有多组数据,每组数据第一行:n,m的值,后面n行为每种货币的面值。
Output
对于每组数据输出组成面值为m的货币的方案数。
Sample Input
3 10 1 2 5
Sample Output
10
思路分析:本题跟完全背包的思路类似。
代码:#include<iostream> #include<stdio.h> #include<string.h> using namespace std; __int64 a[10000]; int n,m,i,j,k; int main() { while(scanf("%d%d",&n,&m)!=EOF) { memset(a,0,sizeof(a)); a[0]=1; for(i=0;i<n;i++) { scanf("%d",&k); for(j=k;j<=m;j++) a[j]+=a[j-k]; } printf("%I64d\n",a[m]); } return 0; }