问题是:有一只装满8斤酒的瓶子和两只分别装5斤和3斤酒的空瓶,如何才能将这8斤酒分成两等份.求C语言编程

分酒问题是一个十分著名的智力问题。该问题是:有一只装满8斤酒的瓶子和两只分别装5斤和3斤酒的空瓶,如何才能将这8斤酒分成两等份。这个问题规模小,手工就可以完成。当你学习了这个问题后,是否考虑过更大规模和一般性问题呢?如果规模扩大,手工无法完成,如何设计算法和建立模型求解呢?对一个一般性的问题又该如何建立模型和设计算法进行求解呢?请你完成下面问题:
1. 现有一只装满12斤酒的瓶子和三只分别装10斤、6斤和3斤酒的空瓶,如何才能将这12斤酒分成三等份。如果进行四等份呢,结果如何?如果4个瓶子分别要求装5斤、3斤、2斤、2斤,又能否实现?试建立数学模型并设计算法,求最少经过多少步操作完成,且有多少种方式可采用最少步数完成。要求对实现方式给出详细操作步骤。
2.一般问题:设有 个瓶子,每个瓶子最多装酒数量用向量表示为 。现在初始各瓶子装酒为 。现要实现将各瓶子装酒为 。要求不凭借任何其它工具,问能否实现?若能实现,给出实现的方法,并给出充分理由说明是否是最少步数。并对你所使用的模型和算法进行分析说明。
3.你能否自己设计一个实例,要求最少完成步数不少于13步。给出从初始状态到目标状态的详细实现步骤。
求C语言或MATLAB,origin编程实现

先把5斤瓶倒满酒,再用5斤瓶的酒把3斤的酒瓶倒满,3斤瓶的酒倒回8斤瓶,5斤瓶里剩下2斤酒倒进3斤瓶,用8斤瓶的酒将5斤瓶倒满,再用5斤瓶的酒把3斤的瓶倒满,5斤瓶剩余4斤酒,3斤瓶的酒倒进8斤瓶,完成。
温馨提示:答案为网友推荐,仅供参考
相似回答