il problema è interessante prometto di ridarci un'occhiata con + calma domani.
Prima però dovresti definire un attimo una cosa che per te potrebbe essere ovvia ma per me non lo è.
Considerando le somme che hai scritto per esempio, l'ordine dei numeri è importante o no?
se
somma 1 = 4+2+1
somma 2 = 3+3+1
somma 3 = 3+2+2
con 3+1+3 parlo sempre di somma2 o è un'altra somma?
la domanda vale per tutte le combinazioni 4+2+1 e 1+2+4 o 1+4+2 rappresentano sempre la somma 1, etc...
la somma dei tre numeri rappresenta la stessa somma anche se addendi uguali non sono nello stesso ordine?
Grazie.
cmq il problema ha una soluzione in tutti e due i casi, anche se nel caso in cui si debba tenere in considerazione la posizione degli addendi la cosa si complica, il problema è risolvibile con carta e penna anche se è un pò macchinoso, quindi l'algoritmo esiste, ma ho qualche difficolta a scriverlo in maniera semplice.
ti faccio un esempio di come lo vedo io il problema.
per esempio prendo 21 come totale e 5 addendi.
R= 21 n= 5
si parte da
somma 01) 17+1+1+1+1
somma 02) 16+2+1+1+1
somma 03) 15+3+1+1+1
somma 04) 15+2+2+1+1
somma 05) 14+4+1+1+1
somma 06) 14+3+2+1+1
somma 07) 14+2+2+2+1
somma 08) 13+5+1+1+1
somma 09) 13+4+2+1+1
somma 10) 13+3+2+2+1
..............
proseguendo
..............
somma xx) 9+9+1+1+1
9+8+2+1+1
9+7+3+1+1
9+7+2+2+1
9+6+4+1+1
9+6+3+2+1
9+6+2+2+2
( 9+9+1+3+2 ) questa non la scrivo perchè è uguale a 9+6+3+2+1
9+5+5+1+1
etc .... ti assicuro che si trovano tutte le somme, l'algoritmo cel ho in testa e spero di tirarlo fuori, soprattutto spero che non sia l'ora tarda a avermi confuso le idee.
Cmq di base si ragiona cosi: dati R e n si assegna al primo numero valore R-n+1 e a gli altri valore 1. poi si va via via sottraendo uno al primo numero (r-n+1) e a ogni passaggio che si toglie uno dal primo numero poi si ridistribuisce il tolto fra gli altri numeri, poi mantendo fisso il pirmo numero si va a togliere uno alla volta numeri al secondo e si ridistribuiscono... etc,etc ..
Essendo più un problema di matematica che di programmazione e dato che con gli interi ci si fa un pò di tutto è sicuramente un problema che è già stato risolto da qualche matematico.