Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
package main import ( "fmt" ) // Barang struct type Barang struct { name string value int weight int } // Fungsi Knapsack Problem func knapsack(items []Barang, maxCapacity int) (int, []string) { n := len(items) dp := make([][]int, n+1) for i := range dp { dp[i] = make([]int, maxCapacity+1) } // Mengisi tabel DP for i := 1; i <= n; i++ { for w := 0; w <= maxCapacity; w++ { if items[i-1].weight <= w { dp[i][w] = max(dp[i-1][w], dp[i-1][w-items[i-1].weight]+items[i-1].value) } else { dp[i][w] = dp[i-1][w] } } } // Nilai maksimum yang bisa dicapai maxValue := dp[n][maxCapacity] // Mencari barang-barang yang diambil untuk mencapai nilai maksimum selectedItems := []string{} w := maxCapacity for i := n; i > 0; i-- { if dp[i][w] != dp[i-1][w] { selectedItems = append(selectedItems, items[i-1].name) w -= items[i-1].weight } } return maxValue, selectedItems } // Fungsi untuk mencari nilai maksimum dari dua bilangan func max(a, b int) int { if a > b { return a } return b } func main() { // Data barang items := []Barang{ {"A", 45, 7}, {"B", 35, 5}, {"C", 25, 2}, {"D", 40, 5}, {"E", 55, 10}, {"F", 35, 3}, {"G", 75, 6}, } // Kapasitas maksimum tas maxCapacity := 29 // Menyelesaikan masalah Knapsack maxValue, selectedItems := knapsack(items, maxCapacity) // Menampilkan hasil fmt.Printf("Nilai maksimum: %d juta rupiah\n", maxValue) fmt.Println("Barang-barang yang dipilih:") for _, item := range selectedItems { fmt.Println(item) } }
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)