[Competition Pro] Löse Rucksackprobleme mit Ruby

Problem

Es gibt $ N $ Gepäckstücke und einen Rucksack mit einem zulässigen Gewicht von $ W $. Das $ i (1 ≤ i ≤ N) $ -te Paket hat einen Wert von $ v_i $ und ein Gewicht von $ w_i $. Wenn Sie einen Gepäcksatz so auswählen, dass die Summe der Gewichte weniger als $ W $ beträgt, ermitteln Sie die maximale Summe der Werte. Sie können jedoch nur einmal dasselbe Gepäck auswählen.

Eingang

N W
v1 w1
v2 w2
:
vN wN

Antworten

#Eingaben empfangen
nw = gets.chomp.split.map(&:to_i)
n = nw[0]
w = nw[1]
vw_a = []
n.times do
    vw_a << gets.chomp.split.map(&:to_i)
end

#Ein Array, das den Maximalwert für jedes Gewicht speichert
dp = Array.new(w+1, 0)

vw_a.each do |vw|
    value = vw[0]
    weight = vw[1]
    if weight <= w && value > dp[weight]
        dp[weight] = value
    end
    (1..w).each do |i|
        if i != weight && dp[i] != 0 && i+weight <= w
            dp[i+weight] += value
        end
    end
end

#Maximalwert ausgeben
puts dp.max

Kommentar

Recommended Posts

[Competition Pro] Löse Rucksackprobleme mit Ruby
[Bei Coder] Lösen Sie das ABC183 D-Problem mit Ruby
[Bei Coder] Lösen Sie das ABC182 D-Problem mit Ruby
Lösung des Rucksackproblems mit dynamischer Planung
Ich habe versucht, das Problem der "mehrstufigen Auswahl" mit Ruby zu lösen
[Anfänger] Lösen wir das AtCoder-Problem mit Ruby, während wir uns den Artikel ansehen!
Ich habe versucht, das Problem der Tribonacci-Sequenz in Ruby mit Wiederholung zu lösen.
Löse das diskrete Logarithmusproblem mit einem beliebigen Mod
Lösen wir das FizzBuzz-Problem!
[Ruby] Problem mit der if-Anweisung
Programmieren mit Ruby (unterwegs)
Lösen mit Ruby AtCoder ABC177 D Union Find
Rubinproblem ⑦
[At Coder] Einführung von Competitive Pro mit Ruby
Ich habe versucht, das Problem der Tribonacci-Sequenz in Ruby zu lösen (Zeitlimit 10 Minuten).
Veröffentlichen Sie die mit Ruby on Rails erstellte App
Verwalten Sie die Version von Ruby selbst mit rbenv
AtCoder ABC127 D Hash mit Ruby 2.7.1 zu lösen
Bestimmen Sie die aktuelle Seite mit Ruby on Rails
[Java] Versuchen Sie, das Fizz Buzz-Problem zu lösen
Ich habe die Anzahl der Taxis mit Ruby überprüft
Ruby-Suchproblem
[Ruby] FizzBuzz-Problem
Ruby API Problem
Ruby API Problem
Löse Ruby TGIF
Fühlen Sie den Grundtyp und Referenztyp leicht mit Rubin
Fühlen Sie den Grundtyp und Referenztyp leicht mit Rubin 2
Ich habe versucht, das Problem mit der Ruby-Karaoke-Maschine zu lösen (es gibt ein Beispiel für die Antwort).