2 条题解

  • 0
    @ 2021-11-07 16:47:02

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    using namespace std;
    int a[10001]={1},n;
    int search(int,int);
    int print(int);
    int main()
    {
    cin>>n;
    search(n,1);

    }
    int search(int s,int t)
    {
    int i;
    for(i=a[t-1];i<=s;i++)
    if(i<n)
    {
    a[t]=i;
    s-=i;
    if(s==0)print(t);
    else search(s,t+1);
    s+=i;
    }
    }
    int print(int t)
    {
    for(int i=1;i<=t-1;i++)
    cout<<a[i]<<"+";
    cout<<a[t]<<endl;
    }

  • 0
    @ 2017-11-02 20:11:39

    #include<iostream>
    using namespace std;
    int a[10000];
    int n;
    int sam(int k,int x)
    { a[0]=1;//从1开始加
    for(int i=a[x-1];i<=k;i++)//总共计算k种情况
    {
    if(i<n)//小于n ,开始进行运算
    {
    a[x]=i;//从1开始计算
    k-=i;
    if(k==0)//当你存入的加数等于n时
    {
    for(int j=1;j<=x-1;j++)
    {
    cout<<a[j]<<"+";//输出不用解释吧
    }
    cout<<a[x]<<endl;//换行
    }
    else sam(k,x+1);//继续调用第一个加数为1的情况
    k+=i;//回溯
    }
    }
    }
    int main()
    {
    cin>>n;
    sam(n,1);
    }

  • 1

信息

难度
4
分类
(无)
标签
递交数
92
已通过
41
通过率
45%
上传者