题目链接:https://www.acwing.com/problem/content/description/280/
题意:
给定个正整数
,从中选出若干个数,使它们的和为
,求有多少种选择方案。
输入格式
第一行包含两个整数和
。
第二行包含N个整数,表示。
输出格式
包含一个整数,表示。
数据范围
题解:裸的多重背包
简单附代码:
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int maxn=1e5+5;
int s[maxn];
int dp[maxn];
signed main(){
std::ios::sync_with_stdio(false);
std::cin.tie(0);
std::cout.tie(0);
int n,m;cin>>n>>m;
dp[0]=1;
for(int i=1;i<=n;i++)cin>>s[i];
for(int i=1;i<=n;i++){
for(int j=m;j>=s[i];j--){
dp[j]+=dp[j-s[i]];
}
}
cout<<dp[m]<<endl;
return 0;
}