Rešitev2: Preprosti nahrbtnik (Mathematica)

Iz MaFiRaWiki

Naloga: Preprosti nahrbtnik

Clear[v,c,d,d1,polozajI,velikostI,prostor,x,nahrbtnik]

d[v_List,c_List]:=Table[c[[i]]/v[[i]],{i,Length[v]}]
d1[v_List,c_List]:=Reverse[Sort[d[v,c]]]

polozajI[v_List,c_List,i_Integer]:=Flatten[Position[d[v,c],d1[v,c][[i]]]][[1]]

velikostI[v_List,c_List,i_Integer]:=v[[polozajI[v,c,i]]]
prostor[v_List,c_List,0,m_Integer]:=m
prostor[v_List,c_List,i_Integer,m_Integer]:=prostor[v,c,i-1,m]-velikostI[v,c,i]
x[i_Integer]:=If[prostor[v,c,polozajI[v,c,i],m]≥0,1,If[prostor[v,c,polozajI[v,c,i-1],m]>0,prostor[v,c,i,m]/velikostI[v,c,i+1],0]]
nahrbtnik[v_List,c_List,m_Integer]:=Table[x[polozajI[v,c,i]],{i,Length[v]}];

Primer

nahrbtnik[{4, 2, 6, 6, 4, 8},{6, 4, 5, 8, 4, 9},17]
{1, 1, 0, 1, 0, 5/8}

Glej tudi

Osebna orodja