類似找零方案
#include <iostream>
#include <cstring>
using namespace std;
int charge[201];
int way[301];
int main()
{
int n,c;
cin >> n >> c;
memset(charge,0,sizeof(charge));
memset(way,0,sizeof(way));
way[0]=1;
for(int i=0; i < c; ++i){
cin >> charge[i];
for(int j=charge[i]; j <= n; ++j)
way[j]+=way[j-charge[i]];
}
cout << way[n] << endl;
}