Pues el algoritmo que conozco para las soluciones es recursivo pero en t=100 ya se queda...basicamente es fuerza bruta y se usa la recursividad porque no se tiene control de n...Algo como
Particiones(int t,int n,Set v){
if(n==0 && t==0) {imprime(v);retorna;}
if(t==0 || n==0)retorna;
for(i=1;i<=t;i++)
Particiones(t-i,n-1,v=v U {i});//osea i hace ahora parte del conjunto v(que sera el que quede con los sumandos)
}
Ademas de eso, solo estaria el algoritmo dinamico que es basicamente usar la particion que se encuentre de t para generar la de t+1
Algo asi como las particiones de 4=3+1,2+2,2+1+1,1+1+1+1...y las de 5 son todas las anteriores mas un uno ademas de 3+2...
Osea que el paso(inductivo) seria que al tener t se tienen las particiones que contienen 1's de t+1...
Mas no puedo ayudar, por ignorancia :S