Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private void button1_Click(object sender, EventArgs e)
- {
- Knapsack();
- }
- private void Knapsack()
- {
- List<Plecak> descendingKanps = _plecakList.OrderByDescending(o => o.W).ToList();
- List<Produkt> descendingProducts = _produktList.OrderByDescending(o => o.cena).ToList();
- int N = descendingProducts.Count;
- double maxVal = 0;
- List<Produkt> addedProducts = new List<Produkt>();
- foreach (Plecak p in descendingKanps)
- {
- double[,] V = new double[N + 1, (int)p.W + 1];
- for (int c = 0; c <= p.W; c++)
- {
- V[0, c] = 0;
- }
- for (int r = 0; r <= N; r++)
- {
- V[r, 0] = 0;
- }
- for (int pos = N - 1; pos >= 0; pos--)
- {
- for (int i = 1; i <= N; i++)
- {
- for (int wt = 1; wt <= p.W; wt++)
- {
- if (descendingProducts[i - 1].waga < wt + 1)
- {
- V[i, wt] = Math.Max(descendingProducts[i - 1].cena + V[i - 1, wt - descendingProducts[i - 1].waga], V[i - 1, wt]);
- }
- else
- V[i, wt] = V[i - 1, wt];
- maxVal = V[i, wt];
- }
- }
- }
- summary.Items.Add("maximum val for knapsack: " + p.nazwa + " is: " + maxVal);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement