求优化代码:
#include<iostream>
#include<algorithm>
using namespace std;
int l[100], n, m;
bool cmp(int a, int b) {
return a >= b;
}
int find(int x, int sum) {
int ans = 0;
for (int i = x + 1; i < n; i++) {
if (sum + l[i] < m && i != n - 1)ans += find(i, sum + l[i]);
if (sum + l[i] == m)ans++;
}return ans;
}
int main() {
cin >> n >> m;
for (int i = 0; i < n; i++)cin >> l[i];
sort(l, l + n, cmp);
cout << find(-1, 0);
return 0;
}
我甚至都用上后缀和了,还是不行。。。Hack数据恐怖如斯