„Programozás/Algoritmusok” változatai közötti eltérés

Tartalom törölve Tartalom hozzáadva
Kommentezés
Komment
544. sor:
az i − 1-edik sor minden elemét. Tehát a táblázat-kitöltés sorrendje: soronként (alulról felfelé), ̋
balról-jobbra haladó lehet.
 
Akkor és csak akkor van megoldása a problémának, ha a VT táblázat kitöltése után VT[E,N]
értéke igaz. Ekkor az (1-2.) képletek szerint a legnagyobb i indexű pi pénz, amely szerepelhet
E eloállításában, az a legnagyobb index, amelyre
::'''VT[E,i] = True ∧ (VT[E,i − 1] = False)'''
 
 
:'''Java kód'''
<pre>
552 ⟶ 559 sor:
boolean VT[][]=new boolean[E+1][n+1];
int i,x;
for (x=1; x<=E; x++) //inicializálás
VT[x][0]=false; //0 sor végig false
VT[0][0]=true; //semmit, érmék nélkül ki lehet rakni
VT[P[0]][0]=true; //inicializálás vége
for (i=1; i<n; i++) //kitöltjük a táblázatot az összes lehetséges P-re balról-jobbra
for (x=1; x<=E; x++) //kitöltjük a táblázatot az összes lehetséges X-re alulról-fölfele
'''VT[x][i]= P[i]==x || VT[x][i-1] || x>=P[i] && VT[x-P[i]][i-1];'''
int db=0; x=E; i=n-1;
if (!VT[E][n-1]) return null; //a fenti összefügének megfelelően eldönti ki lehet-e rakni E-t
int C[]=new int[n];
do{ //megoldás visszafejtés
while (i>=0 && VT[x][i])
i--;