Нахождение минимального количества отходов с использованием Greedy дает неправильный вывод - PullRequest
1 голос
/ 28 марта 2019

Я пытаюсь решить следующую проблему, используя алгоритм Жадности, но не получаю правильного вывода.

Вот проблема: Problem

Вот пример ввода: 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 должен решить проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...