三个油瓶分油问题

本文详细介绍了如何仅用一个一斤、一个七两和一个三两的油瓶,通过算法精确地将一斤油平分为两半斤。问题通过广度优先搜索(BFS)来解决,避免重复节点存储以降低空间复杂度。讨论了算法设计、数据结构以及源代码实现,并对实验进行了测试和总结,指出该方法灵活性不高,对于不同容量的油瓶需重新设计代码。
摘要由CSDN通过智能技术生成

1.问题描述

   原问题:两个小孩去打油,一个人带了一个一斤的空瓶,另一个带了一个七两一个三两的空瓶。原计划各打一斤油,可是由于所带的钱不够,只好两人合打了一斤油,可是又没有其它工具,试仅用三个瓶子(一斤、七两、三两)精确地分成两个半斤油来。

2.算法设计

  A.将分油问题构造的多叉树存入队列oilQueue中,尽量将在数组arr中出现过的结点不要入队。

   B.将队列头结点出队,若结点未在数组arr出现过,则存入数组arr中;若结点已在数组arr中出现过,则直接出队。

   C.构造多叉树直到找到分油问题的结果结点。

   D.按照结点的n属性,寻找其父节点,即找出分油过程。

   油瓶中的油的变化规则:


3.数据结构

  Oil类具有(x,y,z)属性,存放(一斤、七两、三两)瓶里的油。

   Node类,具有Oiln属性,存放三个瓶子里的油状态,以及瓶子存

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值