There
are M chocolate packets each packet can have variable number of chocolates in
each packet. There are N students (N < M). Distribute chocolate packets to
student such that
a)
Each student should get 1 packet
b)
The difference between the number of chocolates in packet with maximum
chocolates and packet with minimum chocolates given to the students should be minimum.
M =
1, 3, 4, 6, 5 (5 packets with specified number of chocolates in them)
N = 3
Output = 3, 5.
import
java.util.Arrays;
public class Chocalate {
/**
* @param chocalates
* @param std
* @return min difference
*/
private static int getChocaltes(int[] chocalates, int std) {
Arrays.sort(chocalates);
int min = Integer.MAX_VALUE;
for(int i=0;i<chocalates.length-std+1;i++) {
min = Math.min(chocalates[i+std-1]-chocalates[i], min);
}
return min;
}
public static void
main(String[] args) {
int[] chocalates = {1, 3, 4, 6, 5};
int students = 3;
int minDiff = getChocaltes(chocalates, students);
System.out.println("Minimum difference is # "+ minDiff);
}
}
No comments:
Post a Comment