2755:神奇的口袋
题目链接http://bailian.openjudge.cn/practice/2755/
#include<iostream>
#include<algorithm>
using namespace std;
int a[25];
int ans = 0;
void dg(int y, int v) {
if (v == 0)
{
ans++;
return;
}
if (y == -1) {
return;
}
for (int i = y; i >= 0; i--) {
if (a[i] <= v) {
dg( i - 1, v - a[i]);
}
}
}
int main() {
int n;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> a[i];
}
sort(a, a + n);
dg( n - 1, 40);
cout << ans;
return 0;
}