求大佬好心人帮助 急急急
查看原帖
求大佬好心人帮助 急急急
866969
telankesi楼主2023/1/4 17:49

只过了两个,不知道哪里有问题

#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;

}
2023/1/4 17:49
加载中...