编辑代码

#include <iostream>
using namespace std;

int d[101][9999]; 
// d[i][j] 表示在 [1, i] 道菜中选,满足共需j元,有多少种选法

int main() {
    
    int n,m,i,j;
    cin >> n >> m;
    int a[n+1];
    for (i = 1; i <= n; i++) {
        cin >> a[i];
    }

    d[1][a[1]] = 1;
    for (i = 2; i <= n; i++) {
        for (j = 1; j <= m; j++) {
            if (a[i] < j) d[i][j] = d[i-1][j] + d[i-1][j-a[i]];
            else if (a[i] == j) d[i][j] = d[i-1][j] + 1;
            else d[i][j] = d[i-1][j];
        }
    }

    cout << d[n][m] <<endl;

	return 0;
}