Atenţie! Aceasta este o versiune veche a paginii, scrisă la 2019-10-14 14:24:39.
Revizia anterioară   Revizia următoare  

Soluţia problemei Shoturi

Soluţie backtracking - 10 puncte

Generăm toate variantele posibile ale vectorului x pentru care x[1] + x[2] + ... + x[N] = K. Această soluţie obţine 0 sau 10 puncte în funcţie de implementarea backtrackingului, care ar avea complexitatea  O(K^N) amortizat.

Soluţie N3 - 50 puncte

Această soluţie presupune tehnica programării dinamice. Vom folosi matricea dp[n][k], pentru care:

  • $dp[i][j] = care este suma potenţelor tuturor amestecurilor posibile ingerând j shoturi păhărele din primele i substanţe interzise sucuri$.

De aici deducem recurenţa: \displaystyle \ dp[i][j]=\sum_{x=0}^{j-1} dp[i-1][x]*(j-x)*hazard[i] + dp[i-1][j]

De ce? Pentru că, din cum am definit dinamica, $dp[i-1][x] = suma potenţelor tuturor amestecurilor posibile ingerând x păhărele din primele i-1 sucuri$