We at any one step can measure only 3 quantities: A liters , B liters , or
(A-B) litres. ( assuming A>B)
With every operation we have a cost associated: For A liter , we need 2
operations( Fill A , transfer from A to vessel) . For B liter , similarly we
need 2 operations And for (A-B) litres we need 4 operations in general (
fill A , transfer A to B, transfer remaining A to vessel and spill B. )
However if this is the last operation , we dont need to empty B so in that
case it would take 3 moves.

But for the moment assume A takes 2 operations , B takes 2 and A-B takes 4.

So see this as a variation of standard Coin Change problem or use simple DP
to find the optimal number of operations. Check if in the optimal solution ,
last move is A-B , if yes, subtract 1 from the answer found ( we dont need
to spill B now )


cheers
On Mon, Oct 26, 2009 at 9:23 AM, shah zeb <sftra...@yahoo.com> wrote:

> http://eaziweb.blogspot.com/
>
> Regards
> Shahzeb Farooq
> Chohan
>
>
> ------------------------------
> *From:* ShingRay <masterrays...@gmail.com>
> *To:* Algorithm Geeks <algogeeks@googlegroups.com>
> *Sent:* Sunday, October 25, 2009 14:59:58
> *Subject:* [algogeeks] Pouring Water Problem
>
>
> Given two cups, one of which can contain A litres of water and the
> other can contain B litres of water, find out the minimum number of
> steps required to obtain C litres of water in a vessel.
>
> At the beginning both cups and the object vessel are empty.
> These are feasible operations:
> 1 emptying a cup
> 2 pouring water from a cup to the other or the vessel
> 3 filling a cup
>
> For example, when A is 3, B is 5 and C is 4, the minimum number of
> steps is 7.
> (*) You can fill B, and pour water from B to A, then pour water from B
> to the vessel.
> The three operations obtain 2 litres of water. We empty A and repeat
> (*). We obtain another 2 litres and it takes 7 steps.
>
> More examples:
> A B C minimum
> 1 2 1 2
> 1 2 9 10
> 3 5 12 7
> 6 7 20 6
>
> -----
>
> A*x + B*y = C
> If x, y are both no non-negative, it takes (x+y)*2 steps.
> If one of them is negative, it takes (x+y)*2-1 steps.
>
> We can iterate x from -max(A, B, C) to max(A, B, C) and get many x-y
> tuples, each of which denote a solution. The minimum solution is the
> best.
> I think the iteration range can be reduce.
> What is a more effective algorithm?
>
> ------------------------------
>  New Email addresses available on Yahoo!
> <http://sg.rd.yahoo.com/aa/mail/domainchoice/mail/signature/*http://mail.promotions.yahoo.com/newdomains/aa/>
> Get the Email name you've always wanted on the new @ymail and @rocketmail.
> Hurry before someone else does!
>
> >
>


-- 
nikhil-

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algogeeks@googlegroups.com
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/algogeeks
-~----------~----~----~----~------~----~------~--~---

Reply via email to