Задача о ранце - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, помогите,пожалуйста, реализовать алгоритм задачи о рюкзаке. на сайте видел некоторые реализации. хотелось бы переделать данный код с делфи на си #. а задача о ранце заключается в следующем: имеется N видов предметов различного веса и стоимости. И рюкзак ёмкости М. Нужно определить комбинацию предметов, которые можно вместить в рюкзак,чтобы общая стоимость предметов была максимальной.
Листинг программы
  1. Type Item=Record
  2. size,val:integer;
  3. end;
  4. var Items:array[0..N] of item;
  5. function knap(M:integer):integer;
  6. var i,space,max,maxi,t:integer;
  7. begin
  8. for i:=0 to N-1 do
  9. begin
  10. space:=M-items[i].size;
  11. if space >=o then
  12. begin
  13. t:=knap(space)+items[i].val;
  14. if t>max then
  15. begin
  16. max:=t;
  17. maxi:=I;
  18. end;
  19. end;end;
  20. D[M]:=max; D1:=maxi;
  21. end;
  22. Knap:=D[M]
  23. end;
  24. space:=M;
  25. repeat writeln(D1[space]);
  26. space:=space-items[D1[space]].size;
  27. until space<==0;

Решение задачи: «Задача о ранце»

textual
Листинг программы
  1.         struct Predmet
  2.         {
  3.             public Int32 Stoimost, Ves;
  4.             public String Name;
  5.         }
  6.         Predmet[] Rukzak1, Rukzak2, All_Item;
  7.         Int32 All_ves = 0;
  8.         Predmet[] a;
  9.         List<Predmet> predmeti = new List<Predmet>();
  10.         Int32 predidush = 0;
  11.  
  12. //Функция которая раскладывает по рюкзакам
  13.         void perestanovk_p(int k)
  14.         {
  15.             int ggg = 0;
  16.             if (k < 0)
  17.             {
  18.                 for (int i = 0; i < All_Item.Length / 2; i++)
  19.                     ggg += All_Item[i].Ves;
  20.                
  21.             }
  22.             else
  23.             {
  24.                 for (int i = 0; i <= k; i++)
  25.                 {
  26.                     Predmet z = a[i];
  27.                     a[i] = a[k];
  28.                     a[k] = z;
  29.                     perestanovk_p(k - 1);
  30.                     z = a[i];
  31.                     a[i] = a[k];
  32.                     a[k] = z;
  33.                 }
  34.             }
  35.         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут