a problem of CLRS
Water jugs
Suppose that you are given n red and n blue water jugs,all of different shapes and sizes.All red jugs hold different amounts of water,as do the blue ones.Moreover,for every red jug,there is a blue jug that holds the same amount of water,and vice versa.
It is your task to find a grouping of the jugs into pairs of red and blue jugs that hold the same amount of water.To do so,you may perform the following operation:pick a pair of jugs in which one is red and one is blue,fill the red jug with water,and then pour the water int to the blue jug.This operation will tell you whether the red or the blue jug can hold more water,or if they are of the same volume.Assume that such a comparison takes one time unit.Your goal is to find an algorithm that makes a minimum number of comparisons do determine the grouping.Remember that you may not directly compare two red jugs or two blue jugs.
my solution(Ω (nlgn)):for a particular first red jug,each of n blue jugs may has the same amount ,compare this red one with each blue one,and put all the blue ones those hold less amount of water to a set,say,S1,all the blue ones those hold more amount of water to another set,say S2,and make the blue one holds the same amount of water grouped with the red one,then choose a second red jug,compare it with the blue one which holds the same amount of water with the first red jug,if it holds more,then do the same thing with on the first red jug int S2,otherwise in S1,and so on...until all the jugs are grouped
No comments:
Post a Comment