1 条题解

  • 0
    @ 2023-9-10 11:57:35
    #include<bits/stdc++.h>
    using namespace std;
    const int N = 15;
    int f[N][N];
    int n , sum , path[N];
    bool st[N];
    void dfs(int u , int s)
    {
        if(s > sum) return;
        if(u > n)
        {
            if(s == sum)
            {
                for(int i = 1; i <= n; i ++) cout << path[i] << ' ';
                exit(0);
            }
            return;
        }
        for(int i = 1; i <= n; i ++)
        {
            if(!st[i])
            {
                st[i] = true;
                path[u] = i;
                dfs(u + 1 , s + i * f[n][u]);
                st[i] = false;
            }
        }
    }
    int main()
    {
        cin >> n >> sum;
        f[1][1] = 1;
        for(int i = 2; i <= 12; i ++)
            for(int j = 1; j <= i; j ++) 
                f[i][j] = f[i-1][j] + f[i-1][j-1];
        dfs(1 , 0);
        return 0;
    }
    
    • 1

    信息

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