1 solutions
-
0
C++ :
#include <cstdio> #include <iostream> using namespace std; int n,i; int a[50]; void print() { printf("%d=",n); for (i=1;i<=n;i++) { if (a[i+1]!=0) printf("%d+",a[i]); else { printf("%d\n",a[i]); return; } } } void dfs(int minn,int num,int sum) { if (sum==0) { print(); return; } if (sum!=n) { a[num]=sum; print(); a[num]=0; } if (sum==1) return ; for (int i=minn;i<=sum/2 ;i++) { a[num]=i; dfs(i,num+1,sum-i); a[num]=0; } } int main() { scanf("%d",&n); dfs(1,1,n); }Pascal :
var a:array[1..100]of integer;n:integer; procedure break(m,k,t:integer); var i,j:integer; begin for i:=k to m div 2 do begin a[t]:=i; write(n,'='); for j:=1 to t do write(a[j],'+'); writeln(m-i); break(m-i,i,t+1); end end; begin readln(n); break(n,1,1) end.
- 1
Information
- ID
- 17173
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By