Czy ktoś ma może treść owego zadania? Zadanie jest na DP.
Robiac porzadki na dysku znalazlem kod, ale niestety nie skomentowalem go :P No a OPSS jak wiadomo ... swiec Panie nad jego dusza . Gdyby ktos mial tresc tego zadania i moglby ją wkleic bylbym bardzo wdzieczny. Pozdr. :-)
0
1
To jest klasyczny problem wydawania reszty. Na wejściu dostajesz ilość pól, minimalną długość skoku i maksymalną długość skoku. Na wyjście podajesz na ile sposobów można dojść do ostatniego pola.
Tak przynajmniej wnioskuje z mojego rozwiązania.
#include <cstdio>
int main()
{
short m;
short n,kmin,kmax;
scanf("%hd",&m);
for (short i=0;i<m;i++)
{
scanf("%hd %hd %hd",&n,&kmin,&kmax);
int* tablica = new int[n];
for (short j=0;j<n;j++)
tablica[j]=0;
tablica[0]=1; //na pierwszym polu stoimy -> można do niego dojść na 1 sposób
for (int t=kmin;t<=kmax;t++) //dla każdej możliwej długości skoku
{
for (int j=1;j<n;j++) //dla każdego pola
if((j-t)>=0) //jeśli istnieje pole z którego mogliśmy tu skoczyć skokiem o dlugości t
if(tablica[j-t]) //i jeśli do tamtego pola można było dojść na ilość sposobów różną od 0
tablica[j]=tablica[j-t]+tablica[j]; //to dodajemy tamtą ilosć sposobów do tej na ile można było wcześniej dojść do naszego pola
}
printf("%d\n",tablica[n-1]);
delete[] tablica;
}
return 0;
}
i na prawdę nie wiem co w tym nietuzinkowego ;)
0
Ano :) Wszystko jasne, dzieki.