Tehtäväsi on pakata tavaraa laatikoihin. Jokaisessa laatikossa voi olla yksi tai kaksi tavaraa, ja lisäksi laatikon tavaroiden yhteispaino saa olla enintään . Mikä on pienin mahdollinen laatikoiden määrä?
Esimerkiksi kun tavaroiden painot ovat ja , tarvitset ainakin laatikkoa. Yksi ratkaisu on pakata yhteen laatikkoon tavarat, joiden painot ovat ja , ja muut tavarat omiin laatikoihin.
Voit olettaa, että on välillä ja on välillä . Jokaisen tavaran paino on enintään .
Python
Toteuta tiedostoon boxes.py
funktio count
, jolle annetaan tavaroiden painot sekä painoraja . Funktion tulee palauttaa tarvittava laatikoiden määrä.
def count(t,x): # TODO if __name__ == "__main__": print(count([1,2,3,4],10)) # 2 print(count([4,4,4,4],5)) # 4 print(count([7,2,3,9],10)) # 3 print(count([4,2,1,5,3],6)) # 3
Java
Toteuta tiedostoon Boxes.java
metodi count
, jolle annetaa tavaroiden painot sekä painoraja . Funktion tulee palauttaa tarvittava laatikoiden määrä.
public class Boxes { public int count(int[] t, int x) { // TODO } public static void main(String[] args) { Boxes b = new Boxes(); System.out.println(b.count(new int[] {1,2,3,4}, 10)); // 2 System.out.println(b.count(new int[] {4,4,4,4}, 4)); // 4 System.out.println(b.count(new int[] {7,2,3,9}, 10)); // 3 System.out.println(b.count(new int[] {4,2,1,5,3}, 6)); // 3 } }