#include<iostream> #include<list> using namespace std; list<int>list1; int num=0; const int N=4; void find_sum(int sum,int n) { if(sum<=0||n<=0) { return; } if(n==sum) { if(list1.size()==N-1) { num++; for(list<int>::iterator it=list1.begin();it!=list1.end();it++) cout<<*it<<" "; cout<<n<<endl; } } int type=1; for(int i=0;n*i<=sum;i++) { for(int k=1;k<=i;k++) list1.push_front(n); find_sum(sum-i*n,n-1); if(n==1&&i>0&&type) { find_sum(sum-i*n,n); type=0; } for(int k=1;k<=i;k++) list1.pop_front(); } } int main() { find_sum(10, 8); cout<<num<<endl; return 0; }