One of these problems is The Milkman Problem where there is a group of cows for sale, each with different milk production and weight, and we also have a truck with a weight limit.
We have to decide what cows we buy and transfer in our track maximizing the amount of milk production per day.
Input 4 parameters:
Number of cows available for sale, e.g. 6 Truck weight limit in kilograms, e.g. 700 Comma-separated list of cow weights, e.g. 360,250,400,180,50,90 Comma-separated list of cow milk production, e.g. 40,35,43,28,12,13 Output 93
Sample input
6 700 360,250,400,180,50,90 40,35,43,28,12,13 8 1000 223,243,100,200,200,155,300,150 30,34,28,45,31,50,29,28 10 2000 340,355,223,243,130,240,260,155,302,130 45,50,34,39,29,40,30,52,31,29Sample output
93 188 320
I made a recursive algorithm that does an iteration per cow. In each iteration it checks whether taking or not the cow we get a optimal solution and returns the higher one.
The complexity of the algorithm in the big O notation is O(N^2) being N the number of cows.
public final class Main { public static void main(String args[]) { // we parse the input int tCows = Integer.parseInt(args[0]); int tWeight = Integer.parseInt(args[1]); String[] wei = args[2].split(","); String[] prod = args[3].split(","); // we print the solution given the the MaxProduction method System.out.println(MaxProduction(tCows, tWeight, wei, prod, 0, 0, 0)); } private static int MaxProduction(int tCows, int tWei, String[] wei, String[] prod, int iter, int aProd, int aWei) { // we check if there are cows left to process if (iter < tCows) { // we make sure not to exceed the weight restrictions imposed if (aWei + Integer.parseInt(wei[iter]) <= tWei) { // we return the higher production between taking or not the current cow return Math.max(Math.max( MaxProduction(tCows, tWei, wei, prod, iter + 1, aProd + Integer.parseInt(prod[iter]), aWei + Integer.parseInt(wei[iter])), aProd), Math.max( MaxProduction(tCows, tWei, wei, prod, iter + 1, aProd, aWei), aProd)); } else { // we do not take the current cow as it does not fit return MaxProduction(tCows, tWei, wei, prod, iter + 1, aProd, aWei); } } return aProd; } }
Jamborel - Casino Resort in Mombasa, Tanzania - JTM Hub
ReplyDelete› jamborel › 군포 출장샵 jamborel Jamborel Casino Resort Mombasa, Tanzania. Jamborel 아산 출장안마 is a popular destination located on the 경주 출장안마 Chupa River in the Central African 안양 출장샵 Republic. Jamborel 전라남도 출장안마 is a popular destination