当前位置: 首页 > article >正文

USACO1.4 母亲的牛奶 Mother's Milk

母亲的牛奶

题目描述

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

写一个程序去帮助农民找出当A桶是空的时候,C桶中牛奶所剩量的所有可能性。

分析:搜索每种可能,搜索变量只用表示AC两个桶中牛奶剩余数量,因为题目只要求AC两桶数量,B桶计算可得,共有6种情况AC,AB,BA,BC,CA,CB,根据变化情况搜索,f数组判重,搜过的情况直接退出。

代码

var
  f:array[0..20,0..20] of boolean;
  a,b,c,i:longint;


procedure dfs(x,z:longint);
var
  y:longint;
begin
  if f[x,z] then exit;
  y:=c-x-z;
  f[x,z]:=true;
  if x>0 then
    begin
      if y<b then
        if b-y>=x then dfs(0,z) else dfs(x-(b-y),z);
      if z<c then
        if c-z>=x then dfs(0,z+x) else dfs(x-(c-z),c);
    end;
  if y>0 then
    begin
      if x<a then
        if a-x>=y then dfs(x+y,z) else dfs(a,z);
      if z<c then
        if c-z>=y then dfs(x,z+y) else dfs(x,c);
    end;
  if z>0 then
    begin
      if x<a then
        if a-x>=z then dfs(x+z,0) else dfs(a,z-(a-x));
      if y<b then
        if b-y>=z then dfs(x,0) else dfs(x,z-(b-y));
    end;
end;


begin
  readln(a,b,c);
  dfs(0,c);
  for i:=0 to c do
    if f[0,i] then write(i,' ');
end.

http://www.lryc.cn/news/2413830.html

相关文章:

  • Reflect中MethodInfo使用方法
  • MyEclipse 8.0 M1 下载 (Standard and Pro Editions)
  • 本地连接的ip地址 子网掩码 默认网关 还有dns服务器地址怎么设置? (转自网易博客)
  • OA项目之我的审批(查询会议签字)
  • nodejs 使用async进行BT吧最新电影数据爬取
  • FLASH常见问题
  • C/C++《计算思维综合实践I》参考选题(84题)[2024-05-22]
  • 个人面试总结暨2020年终总结
  • 聊一聊go的单元测试(goconvey、gomonkey、gomock、ginkgo)
  • 乐Pad A1拆机全程
  • 小周恋爱日记网站
  • 恐龙机器人钢索恐龙形态_机器恐龙铁渣2.0:P1S的钢索终于有伴了
  • 如何查找和注册已备案过期域名
  • 【纯转】Div+CSS经典速成教程。
  • 一文实现nnUNet v2 分割肾脏肿瘤数据集KiTS19
  • win篇--winserver2008R2系统自动更新报错:代码:80092004
  • 火狐与IE兼容性总结(待整理,代码有点乱)
  • MDK常用快捷键和操作
  • 企业竞争竞争情报系统的流程整合
  • 天天酷跑刷钻石辅助下载 最新无异常攻略
  • vs2005 创建动态库及其调用方法
  • CDLINUX U盘安装教程
  • 图像处理入门教程
  • 我的百度blog
  • ctfshow web176-? 的waf(方便对题目差异)
  • 获取屏幕宽度_手机屏幕的那些门道,一文看懂!
  • 未来三年的移动互联网创业----创新工场创始合伙人汪华 在移动开发者大会上的演讲
  • 网页三剑客的一些序列号
  • vue下实现类似android或者ios通讯录(银行选择)-网页版
  • 解决横竖屏样式错乱问题