蛮力法、动态规划法、回溯法和分支限界法求解(11)

时间:2025-07-09

xnode = x.p;

}

v = xnode->p;

for( i=0; i<n; i++){ //取装入背包中物体在排序前的序号

if(xnode->s1[i]){

X[a[i].sign] =1 ;

}else{

X[a[i].sign] = 0;

}

}

delete xnode;

delete heap;

return v; //返回背包中物体的价值

}

/*测试以上算法的主函数*/

int main()

{

goods b[N];

printf("物品种数n: ");

scanf("%d",&n); //输入物品种数

printf("背包容量C: ");

scanf("%d",&C); //输入背包容量

for (int i=0;i<n;i++) //输入物品i的重量w及其价值v

{

printf("物品%d的重量w[%d]及其价值v[%d]:

",i+1,i+1,i+1);

scanf("%d%d",&a[i].w,&a[i].p);

b[i]=a[i];

}

int sum4=KnapSack4(n,a,C,X);//调用分支限界法求0/1背包问题

printf("分支限界法求解0/1背包问题:\nX=[ ");

for(i=0;i<n;i++)

cout<<X[i]<<" ";//输出所求X[n]矩阵

printf("] 装入总价值%d\n",sum4);

return 0;

}

3)复杂度分析:

分支限界法求解0/1背包问题的时间复杂度为:T(n) O(2n)。

相同的数据,求相同同的问题,用不同的方法,得到的结果,所得结果 正式所求问题的最优解,所编程序是正确的。

五、调试和运行程序过程中产生的问题、采取的措施及获得的相关经验教训:

1.本实验中4种算法要用同一个主函数调用,由于背包容量、物品、解向量

等变量都是以全局变量定义的,每次调用一种算法之前,必须要看这些重要的变

蛮力法、动态规划法、回溯法和分支限界法求解(11).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219