【算法笔记第8.2节-BFS 】问题 E: 【宽搜入门】巧妙取量

使用BFS算法解决如何仅依靠三个不同容量的容器倒油来得到特定量的油的问题。介绍了具体的操作步骤和最少倒油次数的计算,通过示例解释了解题过程,并分享了在编程实现过程中遇到的错误和解决方法。
摘要由CSDN通过智能技术生成

题目描述

【题目描述】
  有三个容器,容量分别为 a,b,c(a> b > c ),一开始a装满油,现在问是否只靠abc三个容器量出k升油。如果能就输出“yes”,并且说明最少倒几次,否则输出“no”。例如:10升油在10升的容器中,另有两个7升和3升的空容器,要求用这三个容器倒油,使得最后在abc三个容器中有一个刚好存有5升油,问最少的倒油次数是多少?(每次倒油,A容器倒到B容器,或者A内的油倒完,或者B容器倒满。
 10 7 3
(10 0 0)
(3 7 0):第一次
(3 4 3):第二次
(6 4 0):第三次
(6 1 3):第四次
(9 1 0):第五次
(9 0 1):第六次
(2 7 1):第七次
(2 5 3):第八次,出现5了。

Input

【输入格式】
  有多组测试数据。
  输入a,b,c, k四个正整数( 100 ≥ a > b > c≥1 , 1≤k< 100 )

Output

【输出格式】
  如果能得到k就输出两行。
  第一行“yes”,第二行为最少的次数
  否则输出“no”

Sample Input

 

10 7 3 5

Sample Output

 

yes
8

简直要被这道题目折磨疯了。写了快一天了。。。。。。。。

题意很清楚,bfs,有6条分支

a->b, a->c, b->a, b->c, c->a, c->b;

对于每个分支来说又有两个情况,比如a->b;

  1. a中的水全部倒入b中,则溢出࿰
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值