拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

【题解-Acwing】278. 数字组合

【题解-Acwing】278. 数字组合

题目:278. 数字组合

题目描述

给定 N 个正整数 A1,A2,…,AN,从中选出若干个数,使它们的和为 M,求有多少种选择方案。

输入格式

第一行包含两个整数 N 和 M。

第二行包含 N 个整数,表示 A1,A2,…,AN。

输出格式

包含一个整数,表示可选方案数。

数据范围

1 ≤ N ≤ 100,
1 ≤ M ≤ 10000,
1 ≤ Ai≤ 100,
答案保证在 int 范围内。

时空限制

1s / 64MB

输入样例

4 4 1 1 2 2

输出样例

3

思路


初始化:
f[i][0]=1

代码1(二维数组)

#include<iostream>usingnamespacestd;constintMaxN=100+10,MaxV=10000+10;intN,V,f[MaxN][MaxV];intmain(){cin>>N>>V;f[0][0]=1;for(inti=1;i<=N;i++){intv;cin>>v;for(intj=0;j<=V;j++){f[i][j]=f[i-1][j];if(v<=j){f[i][j]+=f[i-1][j-v];}}}cout<<f[N][V];return0;}

代码2(一维数组)

#include<iostream>usingnamespacestd;constintMaxV=10000+10;intN,V,f[MaxV];intmain(){cin>>N>>V;f[0]=1;for(inti=1;i<=N;i++){intv;cin>>v;for(intj=V;j>=v;j--){f[j]+=f[j-v];}}cout<<f[V];return0;}

结果

返回列表