1 条题解

  • 0
    @ 2025-10-8 16:54:16
    #include <bits/stdc++.h>
    using namespace std;
    int b[110000][11], a[11], S, ans;
    void dfs(int x, int sum)
    {
        if(x == 10)
        {
            if(S - sum >= 1 && S - sum <= 3)
            {
                ans++;
                a[10] = S - sum;
                memcpy(b[ans], a, sizeof(a));
            }	
        }
        else
        {
            for(int i = 1; i <= 3; i++)
            {
                a[x] = i;
                if(sum + i <= S) dfs(x + 1, sum + i);
                a[x] = 0;
            }
        }
    }
    int main()
    {
        scanf("%d", &S);
        memset(a, 0, sizeof(a));
        
        ans = 0; dfs(1, 0);
        
        printf("%d\n", ans);
        for(int i = 1; i <= ans; i++)
        {
            for(int j = 1; j < 10; j++) printf("%d ", b[i][j]);
            printf("%d\n", b[i][10]);
        }
        return 0;
    }
    
    • 1

    信息

    ID
    845
    时间
    1000ms
    内存
    128MiB
    难度
    6
    标签
    递交数
    156
    已通过
    50
    上传者