我的代码:
#include <bits/stdc++.h>
using namespace std;
int n, m, a[128], ans;
void dfs (int step, int sum) {
if (step > n) {
if (sum == m) {
ans++;
}
return ;
}
if (sum + a[step] <= m) {
dfs (step + 1, sum + a[step]);
dfs (step + 1, sum);
}
else dfs (n + 1, sum);
}
int main () {
int sum = 0;
cin >> n >> m;
for (int i = 1; i <= n; i++) {
cin >> a[i];
sum += a[i];
}
sort (a + 1, a + n + 1);
if (sum < m) ans = 0;
else if (sum == m) ans = 1;
else dfs (1, 0);
cout << ans << endl;
return 0;
}