求解木桶倒水问题

该博客讨论了一个数学问题:如何仅用容量为8,5,3升的三个木桶将8升水等分为两份4升。通过类比农夫过河问题,作者提供了思路分析,并展示了一段C语言代码来找出所有可行方案,得出共有16种不同的解决方案,其中最优方案被提及。
摘要由CSDN通过智能技术生成

问题:现在有三个木桶容量分别为8,5,3升,最初容量为8升的木桶内装满了水,另外两个木桶内为空。三个木桶都没有体积刻度,现在需要将大水桶的8升水等分成两份,每份4升水。列出所有可行的方案。(附不能借助除这三个木桶的其他桶接水)


思路分析:这个问题的思路和农夫过河问题的思路基本类似,只是问题的模型改变了,可以参考另一篇文章求解农夫过河问题


C语言代码:

#include<stdio.h>
#define maxsize 100

typedef struct{         //定义3个木桶组的结构体 
    int capability[3];  //记录容量 

    int contain[3];     //记录容积 

}group; 

int judge(group route[maxsize],int location,group newone) //判断新状态在该路径上是否产生重复 
{                                                         //有重复返回1,没有重复返回0 
    int i;
    for(i=0;i<=location;i++)
    {
        if(route[i].contain[0]==newone.contain[0]&&route[i].contain[1]==newone.contain[1]&&route[i].contain[2]==newone.contain[2])
        {
            return 1;
        }
    }
    return 0;
}

void print(group route[maxsize],
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值