Rumah > pembangunan bahagian belakang > C++ > Dalam bahasa C, terjemah yang berikut ke dalam bahasa Cina: 0-1 masalah ransel

Dalam bahasa C, terjemah yang berikut ke dalam bahasa Cina: 0-1 masalah ransel

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2023-09-03 11:17:06
ke hadapan
1308 orang telah melayarinya

Dalam bahasa C, terjemah yang berikut ke dalam bahasa Cina: 0-1 masalah ransel

Beg galas adalah beg. Manakala masalah knapsack melibatkan memasukkan barang ke dalam beg berdasarkan nilainya. Matlamatnya adalah untuk memaksimumkan nilai dalam beg. Dalam beg galas 0-1, anda boleh memilih untuk memasukkan barang atau membuangnya, tidak ada konsep memasukkan sebahagian item ke dalam beg galas.

Contoh masalah

Value of items = {20, 25,40}
Weights of items = {25, 20, 30}
Capacity of the bag = 50
Salin selepas log masuk

Agihan berat

25,20{1,2}
20,30 {2,3}
If we use {1,3} the weight will be above the max allowed value.
For {1,2} : weight= 20+25=45 Value = 20+25 = 45
For {2,3}: weight=20+30=50 Value = 25+40=65
Salin selepas log masuk

Nilai maksimum ialah 65, jadi kami masukkan item 2 dan 3 ke dalam beg galas.

Program Masalah Knapsack 0-1

#include<stdio.h>
int max(int a, int b) {
   if(a>b){
      return a;
   } else {
      return b;
   }
}
int knapsack(int W, int wt[], int val[], int n) {
   int i, w;
   int knap[n+1][W+1];
   for (i = 0; i <= n; i++) {
      for (w = 0; w <= W; w++) {
         if (i==0 || w==0)
            knap[i][w] = 0;
         else if (wt[i-1] <= w)
            knap[i][w] = max(val[i-1] + knap[i-1][w-wt[i-1]], knap[i-1][w]);
         else
            knap[i][w] = knap[i-1][w];
      }
   }
   return knap[n][W];
}
int main() {
   int val[] = {20, 25, 40};
   int wt[] = {25, 20, 30};
   int W = 50;
   int n = sizeof(val)/sizeof(val[0]);
   printf("The solution is : %d", knapsack(W, wt, val, n));
   return 0;
}
Salin selepas log masuk

Output

The solution is : 65
Salin selepas log masuk

Atas ialah kandungan terperinci Dalam bahasa C, terjemah yang berikut ke dalam bahasa Cina: 0-1 masalah ransel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan