2 条题解

  • 2
    @ 2024-8-9 19:26:30

    #include <stdio.h>

    int a[101],len,n;

    void dfs(int step)

    {

    if(step == n) 
    
    {
    
        if(len == 1)  
        
        {
        
            return ; 
            
        }
        
        printf("%d",a[1]);
        
        for(int i = 2;i <= len;i ++)
        
        {
        
            printf("+%d",a[i]);
            
        }
        
        printf("\n");
        
        return ;
        
    }
    
    int tmp = a[len]; 
    
    if(n >= (step + tmp)) 
    
    {
    
        len = len + 1;
        
        a[len] = n - step;
        
        dfs(n); 
        
        len --;
        
    }
    
    for(int i = tmp;i < n - step;i ++)
    
    {
    
        len = len + 1;
        
        a[len] = i;
        
        dfs(step + i);
        
        len --;
        
    }
    

    }

    int main()

    {

    scanf("%d",&n); 
    
    a[0] = 1;
    
    dfs(0);
    
    return 0;
    

    }

    • -4
      @ 2024-7-24 19:32:02

      #include <bits/stdc++.h> using namespace std; int ans[35]; void dfs(int n,int dep) { int i,j; for(i=ans[dep-1];i<=n/2;i++) { ans[dep]=i; int remine=n-i; for(j=1;j<=dep;j++) { cout<<ans[j]<<'+'; } cout<<remine<<endl; dfs(remine,dep+1); } } int main() { int n; cin>>n; ans[0]=1; dfs(n,1); return 0; }

      • 1

      信息

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