Advertisement
Guest User

Untitled

a guest
Nov 17th, 2019
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.55 KB | None | 0 0
  1. namespace kolos5_dynamiczny
  2. {
  3.     //w[i,j] - optymalne wzięcie z i pierwszych przedmiotów gdy uniose j kilogramów - kilogramy liczby naturalne
  4.     //w[0,j] - 0 bo jak mam 0 przedmiotów i - ilosc przedmiotow
  5.     //w[i,0] - 0 bo jak uniose 0kg to wartosc 0
  6.     //w[i,j]>=w[i-1,j]
  7.     //w[i,j] >= w[i, j-1]
  8.     //w[i,j] >= w[i-1, j - waga[i]] + cena[i]
  9.     class Program
  10.     {
  11.         static int Plecak(int[]wagi, int[]ceny, int n, int k) // n - ilosc przedmiotow, k - pojemnosc/udzwig
  12.         {
  13.             int[,] wynik = new int[n + 1, k + 1];
  14.             for (int i = 0; i < n+1; i++)
  15.             {
  16.                 wynik[i, 0]= 0;
  17.             }
  18.             for (int j = 0; j < k + 1; j++)
  19.             {
  20.                 wynik[0, j] = 0;
  21.             }
  22.             for (int i = 1; i < n+1; i++)
  23.             {
  24.                 for (int j = 1; j < k+1; j++)
  25.                 {
  26.                     int m = Math.Max(wynik[i - 1, j], wynik[i, j - 1]);
  27.                     if (j>=wagi[i-1])
  28.                     {
  29.                         m = Math.Max(m, wynik[i - 1, j - wagi[i - 1]] + ceny[i - 1]);
  30.                     }
  31.                     wynik[i , j ] = m;
  32.                 }
  33.             }
  34.  
  35.             return wynik[n, k];
  36.  
  37.         }
  38.         static void Main(string[] args)
  39.         {
  40.             int[] wagi = { 16,15,10,5,7 };
  41.             int n = 5;
  42.             int pojemnosc = 50;
  43.             int[] ceny = { 8, 7, 6, 9, 3 };
  44.             Console.WriteLine(Plecak(wagi, ceny, n, pojemnosc));
  45.             Console.ReadKey();
  46.         }
  47.     }
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement