基础实验2-2.5 整数分解为若干项之和 (20分)--dfs
#include <stdio.h> #include <string.h> int a[31]= {0}; int n,sum=0,num=0,cnt=1; void dfs(int i) { int j,k; if(sum==n) { printf("%d=",n); for(k=0; k<num; k++) { if(k>0) printf("+"); printf("%d",a[k]); } if(cnt%4==0) printf("\n"); else { if(a[0]!=n) printf(";"); } cnt++; } for(j=i; j<=n; j++) { if(sum>n)return; a[num++]=j; sum+=j; dfs(j); num--;//回溯 sum-=j;//回溯 } } int main() { scanf("%d",&n); dfs(1); return 0; }
勤能补拙,熟能生巧