USACO1.4 母亲的牛奶

[搜索]
题目描述

农民约翰有三个容量分别是A,B,C升的桶,A,B,C分别是三个从1到20的整数, 最初,A和B桶都是空的,而C桶是装满牛奶的。有时,农民把牛奶从一个桶倒到另一个桶中,直到被灌桶装满或原桶空了。当然每一次灌注都是完全的。由于节约,牛奶不会有丢失。
写一个程序去帮助农民找出当A桶是空的时候,C桶中牛奶所剩量的所有可能性。

输入格式

单独的一行包括三个整数A,B和C。

输出格式

只有一行,升序地列出当A桶是空的时候,C桶牛奶所剩量的所有可能性。

这道题可以用深搜。
分别以A、B、C三个桶内的牛奶量作状态递归(其实也可以只用其中任意两个作状态,因为牛奶的总量已知且不变)。
下一个状态一共有6种情况,分别是:
A->B, A->C, B->A, B->C, C->A, C->B.

设倒出牛奶的桶为P桶,接收牛奶的桶为G桶,那么当满足以下两个条件时就可以从当前状态推到下一个状态:
1.P桶内有牛奶(牛奶量不为零);
2.G桶内的牛奶量小于它的容量。

那么下一个状态中每一个桶内的牛奶又是多少呢?
设P桶的容量是capP,当前的牛奶量是p,G桶的容量是capG,当前的牛奶量是g.
假如P桶内的牛奶倒进G桶后G桶未满(即p

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值