1 条题解
-
0
C :
#include<stdio.h> #include<stdlib.h> int a[20]={1}; int n,tot=0; void out(int i){ int j; printf("%d=",n); for(j=1;j<i;j++) printf("%d+",a[j]); printf("%d\n",a[i]); } void search(int i,int s){ int j; for(j=a[i-1];j<=s;j++) if(j<n) { a[i]=j; s-=j; if(s==0){ out(i); tot++; } else search(i+1,s); s+=j; } } int main(){ scanf("%d",&n); search(1,n); printf("%d",tot); }
C++ :
#include<cstdio> #include<iostream> #include<cstdlib> using namespace std; int a[10001]={1},n,total; int search(int,int); int print(int); int main() { cin >> n; search(n,1); cout << total; return 0; } 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) { cout << n << "="; for(int i=1;i<=t-1;++i) cout << a[i] << "+"; cout << a[t] <<endl; total++; }
- 1
信息
- ID
- 780
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者