只过了两个,不知道哪里有问题
#include <stdio.h>
int m, r, n;
int a[3005];
int ans = 0;
int f[3005];
void fun(int num,int sum,int k) {
if (num == r) {
if (sum > n) ans++;
return;
}
if (r - num > m - k + 1)return;
if (sum > n) {
int d = m - num;
int c = r - num;
int q = 1;
for (int i = 1; i <= c; i++)
q= q* (d-i+1) / i;
ans += q;
return;
}
for (int i = k; i <= m; i++)
{
if (f[i] == 0) {
f[i] =1;
fun(num + 1, sum + a[i], i + 1);
f[i] = 0;
}
}
return ;
}
int main(){
int y = 0;
scanf("%d %d %d", &m, &r,&n);
for (int i = 1; i <= m; i++) {
scanf("%d", &a[i]);
y += a[i];
}
if (y < n)printf("0");
else if (m == n)printf("1");
else {
fun(0, 0, 1);
printf("%d", ans);
}
return 0;
}