题目链接:https://www.acwing.com/problem/content/280/
解题思路:
AC代码:
#include <iostream>
#include <cstdio>
using namespace std;
const int N = 105, M = 10005;
int a[N];
int f[N][M];
int main(void) {
// freopen("in.txt", "r", stdin);
int n, m; scanf("%d%d", &n, &m);
for(int i = 1; i <= n; i ++) scanf("%d", &a[i]);
for(int i = 0; i <= n; i ++) f[i][0] = 1;
for(int i = 1; i <= n; i ++)
for(int j = 1; j <= m; j ++) {
f[i][j] = f[i - 1][j];
if(j - a[i] >= 0) f[i][j] += f[i - 1][j - a[i]];
}
// for(int i = 1; i <= n; i ++)
// for(int j = 1; j <= m; j ++)
// if(j == m) printf("%d\n", f[i][j]);
// else printf("%d ", f[i][j]);
printf("%d\n", f[n][m]);
// fclose(stdin);
return 0;
}