Задача о ранце - C#
Формулировка задачи:
Здравствуйте, помогите,пожалуйста, реализовать алгоритм задачи о рюкзаке. на сайте видел некоторые реализации. хотелось бы переделать данный код с делфи на си #.
а задача о ранце заключается в следующем: имеется N видов предметов различного веса и стоимости. И рюкзак ёмкости М. Нужно определить комбинацию предметов, которые можно вместить в рюкзак,чтобы общая стоимость предметов была максимальной.
Type Item=Record size,val:integer; end; var Items:array[0..N] of item; function knap(M:integer):integer; var i,space,max,maxi,t:integer; begin for i:=0 to N-1 do begin space:=M-items[i].size; if space >=o then begin t:=knap(space)+items[i].val; if t>max then begin max:=t; maxi:=I; end; end;end; D[M]:=max; D1:=maxi; end; Knap:=D[M] end; space:=M; repeat writeln(D1[space]); space:=space-items[D1[space]].size; until space<==0;
Решение задачи: «Задача о ранце»
textual
Листинг программы
struct Predmet { public Int32 Stoimost, Ves; public String Name; } Predmet[] Rukzak1, Rukzak2, All_Item; Int32 All_ves = 0; Predmet[] a; List<Predmet> predmeti = new List<Predmet>(); Int32 predidush = 0; //Функция которая раскладывает по рюкзакам void perestanovk_p(int k) { int ggg = 0; if (k < 0) { for (int i = 0; i < All_Item.Length / 2; i++) ggg += All_Item[i].Ves; } else { for (int i = 0; i <= k; i++) { Predmet z = a[i]; a[i] = a[k]; a[k] = z; perestanovk_p(k - 1); z = a[i]; a[i] = a[k]; a[k] = z; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д