问题描述:
总体积为T的背包,n件物品体积分别是w1,w2,...,wn,找出若干件恰好装满背包。找出满足条件的解。
例如,当T=10时,各件物品的体积时{1,8,4,3,5,2}时,可找到下列4组解:
(1,4,3,2),(8,2),(1,4,5),(3,5,2)。
提示:
(1)将物品顺序选取到背包中。假设选取了钱i件物品之后背包还没有装满,则继续选取第i+1件物品。
(2)若改件物品太大,不能装入,则弃之选取下一件,直至背包装满为止。
(3)但如果在剩余的物品中找不到合适的物品填满背包,则说明刚刚装入背包的那件物品不合适,应该将它取出来,继续从它的后面选取。
(4)如此重复,直到求的满足的条件的解,或者无解。
#include<stdio.h>
//结构体,里面有相应的物品的体积,和该物品所在数组的下标值
typedef struct
{
int index;//下标
int data;//体积
}datatype;
int findway(int tatol,datatype weight[])
{
int lensize=6,top=0;
int i,j;