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