Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
20744 | 孙文谦 | 自然数的拆分 | C++ | 解答错误 | 0 | 0 MS | 264 KB | 714 | 2021-06-19 21:51:12 |
#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<cmath> using namespace std; int a[100000]={1};int n,tot; void dfs(int,int); void print(int); int main() { cin>>n; dfs(n,1); cout<<"total="<<tot; return 0; } void dfs(int p,int q) { int i; for(i=a[q-1];i<=p;i++) { if(i<n) { a[q]=i; p-=i; if(p==0)print(q); else dfs(p,q+1); p+=i; } } } void print(int j) { tot++; cout<<n<<"="; for(int i=1;i<=j;i++) { if(i!=j) cout<<a[i]<<"+"; else cout<<a[i]; } cout<<endl; }