分酒问题程序报告.doc

合肥学院 计算机科学与技术系 1、问题分析和任务定义 题目:已知有3个容量分别为3kg,5kg和8kg且没有刻度的酒瓶3kg和5kg的瓶子均装满了酒。而8kg的瓶子为空。现要求仅用这3个酒瓶将这些酒均分为两个4kg,并分别装入5kg和8kg的瓶子中。 若要完成题目的要求,首先需要选择一个数据结构表示酒杯数,有3个酒杯并且通过子函数可以输入容器的容量,由题意可知输入的酒杯的容量分别为3、5、8,起始状态下酒杯的装酒数为3、5、0,最终经过转换变为0、4、4。其中每个酒杯的装酒数不得超过容器的容量,可以采取回溯递归的思路。每经过一次转换就覆盖前面的状态,直至最终变为需要的状态为止。 2、数据结构的选择和概要设计 1.数据结构的选择 模型描述:由于涉及状态之间的转化,因此可以用图模型进行求解。把每次可分的状态抽象为一个图结点,按照图的有关知识去求解。 本题采用邻接表法存储图的各个顶点信息,然后用深度优先搜索遍历的方法,得到所有的解。整个程序的实现较简单,属于图应用的范畴。因此在遇到求解搜索路径的问题时,我们不妨从图模型的角度去考虑问题,把有关问题抽象为图模型。通过图模型去思考该类问题地解法可能会更简单。因此要深刻理解图方面的知识,尤其是图的深度优先搜索和图的广度优先搜索的应用。 提供的思路为回溯算法的设计方法:回溯是一种系统的搜索问题解答的方法(常见的是求解迷宫老鼠的问题);其

文档评论(0)

1亿VIP精品文档

相关文档