So bekomme ich die ganze Idee des gebrochenen Rucksackproblems, das ist, Ihren Behälter mit Bruchmengen der gegebenen Einzelteile, die Sie haben, optimal zu füllen.Fractional Knapsack Java-Implementierung
Allerdings bin ich verwirrt, wie ich diesen Algorithmus in eine Java-Funktion implementieren kann? Ich muss es für meinen Coursera Kurs lösen. Wenn jemand erklären kann, wie man diese Funktion schreibt, würde ich es sehr schätzen. Dies ist die Frageaufforderung:
Aufgabe. Das Ziel dieses Codeproblems ist es, einen Algorithmus für das> Fractional-Rucksack-Problem zu implementieren. Eingabeformat. Die erste Zeile der Eingabe enthält die Anzahl n der Items> und die Kapazität W eines Rucksacks. Die nächsten n Zeilen definieren die Werte und Gewichte der Elemente. Die i-te> Zeile enthält Ganzzahlen vi und wi - den Wert und das Gewicht des i-ten Elements. Einschränkungen. 1 ≤ n ≤ 103
Das ist, was ich bisher haben (dies umfasst Starter Code, aus dem der Kurs mir zur Verfügung gestellt)
`
public class FractionalKnapsack {
private static double getOptimalValue(int capacity, int[] values, int[] weights) {
//filling array vallues with 0
Arrays.fill(values,0);
//total value is 0
double value = 0;
for(int i=0; i<values.length; i++){
if(W==0){
return
}
}
//write your code here
//fit first the item with the maximal value per unit
//while knapsack is not full
//choose item with maxmimum v/wi
//if item fits into knapsack, take all of it
//else take so much to fill knapsack to end
//return total value and amounts taken
return value;
}
public static void main(String args[]) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int capacity = scanner.nextInt();
int[] values = new int[n];
int[] weights = new int[n];
for (int i = 0; i < n; i++) {
values[i] = scanner.nextInt();
weights[i] = scanner.nextInt();
}`
Dies ist die richtige Antwort. Es ist traurig, dass die Leute danach fragen :) – xenteros