/*
  Scrivere un programma che scompone un numero intero in tutte le possibilli
  combinazioni di somme.
*/

#include <iostream.h>

int num;
void scomposizione(int, int);

int main(){
	cout<<"Inserire il numero che si vuole scomporre (1<n<10): ";
	cin>>num;
	while(num<1 || num>10){
		cout<<"Scelta non valida!! Reinserire il numero da scomporre: ";
		cin>>num;
	}
	scomposizione(num-1, 1);
	return 0;
}

void scomposizione(int n, int k){
if(n>0){
	if(k==1){
		cout<<n;
		for(int x=0; x<num-n; x++){
			cout<<"+1";
		}
		cout<<endl;
		scomposizione(n-1, num-(n-1));
	}
	else{
		cout<<n<<"+"<<k;
		for(int y=0; y<num-(n+k); y++){
			cout<<"+1";
		}
		cout<<endl;
		scomposizione(n, k-1);
	}
}
}




