数据结构课程设计背包问题
PAGE \* MERGEFORMAT 13
《数据结构》
课程设计报告
(背包问题的求解)
学 院:
班 级:
学 号:
姓 名:
指导教师:
目 录
1.需求分析 ………………….3
2.概要设计 ………………….5
3.详细设计 ………………….7
4.调试分析 ………………….10
5.用户使用说明 …………….10
6.测试结果 ………………….11
7.附录 ……………………….14
2008年12月20日
题目:背包问题的求解
一.需求分析
1、 程序的开始有个菜单栏目,可以选择程序来实现背包问题的求解。(注:程序中 1:表示回溯遍历的可行性 2:反之表示不可行路径)题目用到了两种方法来解决问题,分别是回溯法和递归法。
2、 程序会建立简单背包问题的基本模型,背包的建立是在键盘上直接输入背包能容纳的最大重量、物品的个数和每个物品的重量的值的方法。在输入数据的过程中,会提醒我们怎样输入数据,每一项数据输完后按Enter键进行下个数据项的输入。数据输入的结束会一直到简单背包问题模型的全部建立。
3、主要功能:根据(1)中的选项程序会执行数组的加乘运算,并且会以排列的形式分别输出符合要求的所有可能组合及相关物品的相关信息.C会处理一些不符合矩阵加法和乘法运算的错误。
4、栈与递归的实现:与汇编程序设计主程序和子程序之间的连接及信息交换相类似,在高级语言编制的程序中,调用函数和被调用函数之间的连接及信息交换需要通过站栈来进行。
5、数据测试
在键盘上依次输入数字:“15
7
3
4
5
6
7
8
9”
运行结果为:
背包能容纳的最大重量:15
物品个数:7
第1个物品重量:
3
第2个物品重量:
4
第3个物品重量:
5
第4个物品重量:
6
第5个物品重量:
7
第6个物品重量:
8
第7个物品重量:
9
Result 1
Item.4 Weight:6 Item.7 Weight:9
Result 2
Item.5 Weight:7 Item.6 Weight:8
Result 3
Item.1 Weight:3 Item.2 Weight:4 Item.6 Weight:8
Result 4
Item.1 Weight:3 Item.3 Weight:5 Item.5 Weight:7
Result 5
Item.2 Weight:4 Item.3 Weight:5 Item.4 Weight:6
Press any key to continue
如果输入不合法,编译系统将提示重新输入数据。
输入数字“10 5 5 6 7 8 9”
运行结果为:
运行结果为空值
上面的数据测试是用数组法测得的。
数据输入:15 7 3 4 5 6 7 8 9
这次采用的快速编辑模式,上面数据是对数组元素和最值的取舍。
运行结果:
背包能容纳的最大重量:15
物品个数:7
第1个物品重量:
3
第2个物品重量:
4
第3个物品重量:
5
第4个物品重量:
6
第5个物品重量:
7
第6个物品重量:
8
第7个物品重量:
9
Result 1
Item.4 Weight:6 Item.7 Weight:9
Result 2
Item.5 Weight:7 Item.6 Weight:8
Result 3
Item.1 Weight:3 Item.2 Weight:4 Item.6 Weight:8
Result 4
Item.1 Weight:3 Item.3 Weight:5 Item.5 Weight:7
Result 5
Item.2 Weight:4 Item.3 Weight:5 Item.4 Weight:6
Press any key to continue
背包能容纳的最大重量:
物品个数:
第1个物品重量:
第2个物品重量:
第3个物品重量:
第4个物品重量:
第5个物品重量: