Я пытаюсь решить следующую проблему, используя алгоритм Жадности, но не получаю правильного вывода.
Вот проблема:
Вот пример ввода: 20 7 10 4 6 7 6 9 4
Вот вывод модели: 217
Мой вывод: 343 Мой алгоритм с использованием фрагмента кода Java здесь:
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Scanner;
public class Elevate {
public static void main(String[] args) throws FileNotFoundException {
Scanner cin = new Scanner(new FileReader("elevate.in"));
int N, M, Weights, waste;
M = cin.nextInt();
N = cin.nextInt();
ArrayList<Integer> wieghts = new ArrayList<>();
ArrayList<Integer> WT = new ArrayList<>();
int numCase =1;
while(N != 0 && M != 0){
Weights = M;
waste = 0;
for (int i = 0; i < N; i++) {
wieghts.add(cin.nextInt());
}
for (int i = 0; i < N; ) {
if(wieghts.get(i) <= Weights){
Weights -= wieghts.get(i);
i++;
}
else{
//we cannot fit more people
//Start again
WT.add(Weights);
Weights = M;
}
}
for (int i = 0; i < WT.size(); i++) {
waste+= (WT.get(i) * WT.get(i) * WT.get(i));
}
System.out.println(numCase +": "+waste);
M = cin.nextInt();
N = cin.nextInt();
wieghts.clear();
WT.clear();
numCase++;
}
}
}
Является ли Жадность плохим выбором?пассажиры должны путешествовать в том же порядке прибытия, так что я вроде как прихожу на максимум ...
Редактировать Жадный действительно плохой выбор, DP должен решить проблему.