Zadanie Żabka 1010 Opss

0

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. :-)

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1