AcWing 278. 数字组合
原题链接
简单
作者:
minux
,
2020-05-10 18:58:21
,
所有人可见
,
阅读 566
c++
#include <bits/stdc++.h>
using namespace std;
const int N=10005;
int n, m;
int f[N];
int main(){
cin>>n>>m;
memset(f, 0x00, sizeof f);
f[0]=1;
for(int i=0; i<n; ++i){
int v;
cin>>v;
for(int j=m; j>=v; --j)
f[j]+=f[j-v];
}
cout<<f[m]<<endl;
return 0;
}
python
from typing import List
class Solution:
def main(self, n:int, m:int, a:List[int]):
f=[0 for _ in range(m+1)]
f[0]=1
for i in range(n):
for j in range(a[i], m+1)[::-1]:
f[j]+=f[j-a[i]]
print(f[m])
if __name__ == '__main__':
n, m=map(int, input().split())
a=list(map(int, input().split()))
sol=Solution()
sol.main(n, m, a)