背包问题实验报告(C语言实现、文件输入及文件输出).docxVIP

  • 17
  • 0
  • 约3.31千字
  • 约 9页
  • 2020-12-07 发布于天津
  • 举报

背包问题实验报告(C语言实现、文件输入及文件输出).docx

PAGE PAGE #/ 9 背包问题 背包问题 假设有一个能装入总体积为 T的背包和n件体积分别为W 1, w 2, … , W n 的物品,能否从 n 件物品中挑选若干件恰好装满背包,即使 n 的物品, 1+w 2+ …+ W n=T,要求找出所有满足上述条件的解。 例如:当解:( 1 ,T=10,各件物品的体积{1, 8, 4, 3, 5, 2} 例如:当 解:( 1 , 4,3, 2 4, 1, 4, 5) 8, 2) 3, 5, 2)。 概要设计: 采用栈数据结构,利用回溯法的设计思想来解决背包问题。 首先将物品排成一列,然后顺序选取物品装入背包,假设已选取了前 i 件物 品之后背包还没有装满,则继续选取第 i+1 件物品,若该件物品 “太大”不能装 入,则弃之而继续选取下一件,直至背包装满为止。但如果在剩余的物品中找 不到合适的物品以填满背包,则说明 “刚刚”装入背包的那件物品 “不合适”,应将 它取出“弃之一边”,继续再从 “它之后”的物品中选取,如此重复,直至求得满足 条件的解,或者无解。 ADT Stack { 数据对象:D= { ai | ai € ElemSet, i=1,2,…,n. nA 0 } 数据关系:R1 = { vai-1, ai | ai-1, ai€ D, i=2,…,n } 约定 an 端为栈顶, a1 端为栈底。 基本操作: I

文档评论(0)

1亿VIP精品文档

相关文档