Se o malloc devolveu NULL eh porque nao tem memoria disponivel, entao nao adianta tentar varias vezes. Meu conselho de monitor e de amigo: nao complique as coisas; ao contrario, tente sempre escolher a solucao mais simples. Neste EP nao ha necessidade de usar malloc. Se voce quer usar um vetor de memoizacao, aloque-o estaticamente ("int v[MAX];", para algum valor MAX que seja razoavel), e use este mesmo vetor ao longo de toda a execucao. Alguns podem pensar: mas se o MAX for grande e a entrada for pequena o meu programa vai ficar lento para esta entrada. Resposta: se preocupe 99,99999...% com as entradas grandes e 0,0000...1% com as entradas pequenas. Por pior que seja o programa ele eh satisfatorio para entradas pequenas.
Obs.: Desculpem a falta de acentos.
Fórum