fork download
  1. #include <stdio.h>
  2.  
  3. typedef struct {
  4. int w, v;
  5. double r;
  6. } Item;
  7.  
  8. int main() {
  9. int n, cap;
  10. printf("Jumlah item: "); scanf("%d", &n);
  11. Item a[n];
  12. for(int i=0;i<n;i++){
  13. printf("Berat dan nilai item %d: ", i+1);
  14. scanf("%d %d",&a[i].w,&a[i].v);
  15. a[i].r = (double)a[i].v / a[i].w;
  16. }
  17. printf("Kapasitas knapsack: "); scanf("%d",&cap);
  18. for(int i=0;i<n-1;i++)
  19. for(int j=i+1;j<n;j++)
  20. if(a[i].r<a[j].r){
  21. Item t=a[i]; a[i]=a[j]; a[j]=t;
  22. }
  23.  
  24. double total=0;
  25. for(int i=0;i<n && cap>0;i++){
  26. int take = a[i].w <= cap ? a[i].w : cap;
  27. total += take * a[i].r;
  28. cap -= take;
  29. }
  30.  
  31. printf("Nilai total maksimum: %.2f\n", total);
  32. return 0;
  33. }
  34.  
Success #stdin #stdout 0s 5324KB
stdin
5
54 7 8 10
10 5 7 12 8
20
stdout
Jumlah item: Berat dan nilai item 1: Berat dan nilai item 2: Berat dan nilai item 3: Berat dan nilai item 4: Berat dan nilai item 5: Kapasitas knapsack: Nilai total maksimum: 54.00