2 条题解

  • 0
    @ 2025-10-8 16:51:32
    #include <bits/stdc++.h>
    using namespace std;
    int a[80], ans, n;
    void dfs(int x, int s)
    {
        if (s == n && x - 1 >= 2)
        {
            for (int i = 1; i <= x - 2; i++) printf("%d+", a[i]); printf("%d\n", a[x - 1]);    
        }
        else
        {
            for (int i = a[x - 1]; i <= (n - s); i++)
            {
                a[x] = i;
                dfs(x + 1, s + i);
                a[x] = 0;
            }
        }    
    }
    int main()
    {
        scanf("%d", &n);
        a[0] = 1;
        ans = 0; dfs(1, 0);
        return 0;
    }
    
    • 0
      @ 2025-10-8 16:51:25
      #include<bits/stdc++.h>
      using namespace std;
      int a[80],ans,n;
      void dfs(int x,int s)
      {
      	if(s==n&&x-1>=2)
      	{
      		for(int i=1;i<=x-2;i++)printf("%d+",a[i]);printf("%d\n",a[x-1]);	
      	}
      	else
      	{
      		for(int i=a[x-1];i<=(n-s);i++)
      		{
      			a[x]=i;
      			dfs(x+1,s+i);
      			a[x]=0;
      		}
      	}	
      }
      int main()
      {
      	scanf("%d",&n);
      	a[0]=1;
      	ans=0;dfs(1,0);
      	return 0;
      } 
      • 1

      信息

      ID
      277
      时间
      1000ms
      内存
      128MiB
      难度
      6
      标签
      递交数
      185
      已通过
      57
      上传者