2 条题解
-
0Guest LV 0
-
0
#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
#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%
- 上传者