1 条题解

  • 0
    @ 2026-9-30 12:58:11

    C++ :

    
    #include <cstdio>
    static int N;
    static long long M, cnt;
    static long long a[15];
    void dfs(int len, long long *cur){
        if(len == 1){ if(cur[0] == M) cnt++; return; }
        for(int i = 0; i + 1 < len; i++){
            long long nxt[15];
            for(int j = 0; j < len; j++) nxt[j] = cur[j];
            nxt[i] = cur[i] - cur[i + 1];
            for(int j = i + 1; j + 1 < len; j++) nxt[j] = cur[j + 1];
            dfs(len - 1, nxt);
        }
    }
    int main(){
        if(scanf("%d", &N) != 1) return 0;
        if(scanf("%lld", &M) != 1) return 0;
        for(int i = 0; i < N; i++) if(scanf("%lld", &a[i]) != 1) return 0;
        dfs(N, a);
        printf("%lld\n", cnt);
        return 0;
    }
    
    
    • 1

    信息

    ID
    2833
    时间
    1000ms
    内存
    256MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者