社区
软件水平考试
帖子详情
请教:什么是"背包问题"?
zhangyiheng
2003-04-16 01:18:55
经常看见人家说"背包问题"
可我老是不知道是什么东西,敬请指教!
...全文
308
12
打赏
收藏
请教:什么是"背包问题"?
经常看见人家说"背包问题" 可我老是不知道是什么东西,敬请指教!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
3851391
2003-04-27
打赏
举报
回复
“背包问题”的基本描述是:有一个背包,能盛放的物品总重量为 S,设有 N 件物品,其重量分别为w1,w2,...,wn,希望从N件物品中选择若干件物品,所选物品的重量之和恰能放入该背包,即所选物品的重量之和等于 S 。
如下程序均能求得“背包问题”的一组解,其中程序 5.1 是“背包问题”的递归解法,而程序 5.2 是“背包问题”的非递归解法。
[程序 5.2]
#include <stdio.h>
#define N 7
#define S 15
typedef struct {
int S;
int n:
int job;
} KNAPTP;
int w[N+1] = {0,1,4,3,4,5,2,7};
int knap(int S,int n);
main(){
if ( knap(S,N) ) printf("0K!\n" );
else printf( "N0!\n" );
int knap( int S,int n )
{ KNAPTP stack[100],x;
int top, k, rep;
x.s = s; x.n = n;
x.job = 0;
top = l; stack[top] = x;
k = 0;
while ( __(3)__ ) { !rep&&top--
x = stack[top];
rep = l;
while ( !k && rep ) {
if( x.s=0 ) k = 1; /*已求得一组解*/
else if ( x.S<0 || x.n<=0 ) rep = 0; rep:沒有找到解的退出
else { x.s = __(4)__ ; x.job=1; 沒有找到解x.s-w[x.n]
__(5)__ = x; stack[top++] 存入還可減的值
}
}
if ( !k ) {
rep = 1;
while ( top >= 1 && rep) {
x = stack[top--];
if ( x.job=1){
x.s += w[x.n + 1];
x.job = 2;
stack[++top] = x;
__(6)__ ; x.n++
}
}
}
}
if (k){ */输出一组解*/
while ( top >= 1 ) {
x = StaCk [ top-- ];
if ( x.job == 1 )
printf ( "M\t,w[x.n+1] );
}
}
return k;
}
JOEJOEJOE
2003-04-27
打赏
举报
回复
背包问题,是由一个数学家想出来的加密算法!
被包问题,是典型的公钥程序之父!
oushunbao
2003-04-27
打赏
举报
回复
找本《运筹学》看看
zhangyiheng
2003-04-18
打赏
举报
回复
我当然学过C,但我觉得只要能看懂程序就行了,管他是什么法.就像那些排序,只要排出来就行了,管他是插入还是选择
wangmin_yjitx
2003-04-18
打赏
举报
回复
用广度艘索和深度搜索都可以
answerzy
2003-04-18
打赏
举报
回复
有性格。
zhangyiheng
2003-04-17
打赏
举报
回复
什么是回朔法?能不能具体点?
thunderx
2003-04-17
打赏
举报
回复
呵呵!你没看书:),也没学过C吗?
cqfanli
2003-04-17
打赏
举报
回复
呵呵,必考的内容呀,大哥 …
===============================================================
http://www.cnitexam.com
中国IT考试网 等级考试,资格&水平考试,NCNE考试,CCNP,MCSE…
立足中国,做最好的考试网站…
http://hilevel.mycool.net
高级程序员、网络设计师的论坛!专门为工程师定制的网上交流空间!
wyy2xjp
2003-04-17
打赏
举报
回复
:) :) :) :)
houhw1728
2003-04-16
打赏
举报
回复
高程里面的背包问题,用的是回朔法
不好理解,
双杯献酒
2003-04-16
打赏
举报
回复
下面的问题就是一个背包问题
有6个数
3,7,9,11,15,18
问哪几个数加起来等于 42 ?
答案 7+9+11+15=42
由于它一般只能通过穷举来分解,因而可用于加密.
游戏测试 软件测试 面试题
归纳总结了一些游戏测试的面试题,有入职面试的童鞋可以参考
南京邮电大学811数据结构考研模拟试卷二及参考答案
该资源为南京邮电大学811数据结构考研模拟试卷二及参考答案,资源高清无水印哦!
2020年最新程序员面试技巧大梳理.pdf,这是一份不错的文件
2020年最新程序员面试技巧大梳理.pdf,这是一份不错的文件
it从业人员面试经典70问答
it从业人员面试经典70问答it从业人员面试经典70问答it从业人员面试经典70问答it从业人员面试经典70问答
第三讲 多重
背包问题
(对背包九讲的学习)
题目 有N种物品和一个容量为V的背包。第i种物品最多有n[i]件可用,每件费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 基本思路: 对每个物品都考虑拿几个(这个很好理解) 递推式:f[i][v]=max{f[i-1][v-k*c[i]]+k*w[i]|0<=k<=n[i]} 时间复杂度是O(V*Σn[i]) 转...
软件水平考试
2,958
社区成员
22,570
社区内容
发帖
与我相关
我的任务
软件水平考试
就计算机等级考试、软件初、中、高级不同级别资格考试相关话题交流经验,共享资源。
复制链接
扫一扫
分享
社区描述
就计算机等级考试、软件初、中、高级不同级别资格考试相关话题交流经验,共享资源。
c1认证
c4java
c4前端
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章