给定一个硬币列表,您可以通过多少种方式更改金额? 编写一个程序,给出
进行更改的金额和无限可用硬币的类型数量 硬币清单 - 打印出从硬币到STDOUT可以有多少种不同的改变方式。
我尝试了各种输入。我得到垃圾值作为输入的答案 10(N)4(M) 2 5 3 6 请解释一下?
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#define MAX 200
using namespace std;
long long coinchange(int coin[],int m,int n)// n =N
{
long long total[m][n+1];
/*
for(int j=0;j<m;j++) {
for(int i=0;j<n+1;i++) {
total[j][i] = 0;
}
}
*/
for(int j=0;j<m;j++)
total[j][0] = 1;
for(int i=0;i<m;i++) {
for(int j=1;j<n+1;j++) {
if(j>=coin[i])
total[i][j] = total[i-1][j] + total[i][j-coin[i]];
else
total[i][j] = total[i-1][j];
}
}
return total[m-1][n];
}
int main() {
int N,M;
cin>>N;
cin>>M;
int coin[MAX];
for(int i=0;i<M;i++)
cin>>coin[i];
cout<<coinchange(coin, M, N)<<endl;
return 0;
}