#include<iostream>
using namespace std;
const long long N=20;
const long long M=3e3+10;
long long dp[N][M];
//dp[i][j]:用前i种货币,得到面值为j的结果,可以的方案数
//dp[i][j];
long long a[N];
long long n,m;
int main()
{
cin>>n>>m;
for(long long i=1;i<=n;i++)
cin>>a[i];
for(long long i=0;i<=n;i++)
dp[i][0]=1;
for(long long i=1;i<=n;i++)
{
for(long long j=1;j<=m;j++)
{
dp[i][j]=dp[i-1][j];
if(j-a[i]>=0)
dp[i][j]+=dp[i][j-a[i]];
}
}
cout<<dp[n][m]<<endl;
}
AcWing算法提高课-货币系统(1021)
于 2023-01-28 09:11:02 首次发布