首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列程序说明和C代码,将应填入(n)处的字句写在对应栏内。 【说明】 “背包问题”的基本描述是:有一个背包,能盛放的物品总重量为S,设有N件物品,其重量分别为w1,w2,…,wn。希望从N件物品中选择若干件物品,所选物品的重量之和恰能放入该背包
阅读下列程序说明和C代码,将应填入(n)处的字句写在对应栏内。 【说明】 “背包问题”的基本描述是:有一个背包,能盛放的物品总重量为S,设有N件物品,其重量分别为w1,w2,…,wn。希望从N件物品中选择若干件物品,所选物品的重量之和恰能放入该背包
admin
2009-05-15
92
问题
阅读下列程序说明和C代码,将应填入(n)处的字句写在对应栏内。
【说明】
“背包问题”的基本描述是:有一个背包,能盛放的物品总重量为S,设有N件物品,其重量分别为w1,w2,…,wn。希望从N件物品中选择若干件物品,所选物品的重量之和恰能放入该背包,即所选物品的重量之和等于S。
如下程序均能求得“背包问题”的一组解,其中程序1是“背包问题”的递归解法,而程序2是“背包问题”的非递归解法。
【程序1】
#include<stdio.h>
#define N 7
#define S 15
int w[N+1]={0,1,4,3,4,5,2,7};
int knap(int s, int n)
{
if(s==0) return 1;
if(s<0 || (s>0 && n<1))return 0;
if((1)){/*考虑物品n被选择的情况*/
printf("%4d",w[n]);
return 1;
}
return (2);/*考虑不选择物品n的情况*/
}
main()
{
if(knap(S,N))printf("OK!\n");
else printf("N0!\n");
}
【程序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=1; stack[top]=x;
k=0;
while( (3) ){
x=stack[top];
rep=1;
while(!k && rep){
if(x.s==0) k=1;/*已求得一组解*/
else if(x.s<0 || x.n<=0) rep=0;
else{
x.s=(4);
x.job=1;
(5)=x;
}
}/*while*/
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);
}/*if*/
}/*while*/
}/*if*/
/*while*/
if(k){ /*输出一组解*/
while(top>=1){
x=stack[top--];
if(x.job==1)printf("%4d\t",w[x.n+1]);
}
}
return k;
}
选项
答案
(1) knap(s-w[n],n-1) (2) knap(s,n-1) (3) top>=1 && !k 或 top>0 && k==0 (4) x.s-w[x.n--] (5) stack[++top] (6) rep=0
解析
本题考查“背包”问题,这是一个非常经典的问题,一般采用递归法实现。
典型做法是逐个考查每一件物品,对于第i件物品的选择考虑有两种可能。
. 考虑物品i被选择,这种可能仅当包含它不会超过方案总重量限制时才是可行的。选中后继续递归考虑其余物品的选择。
. 考虑物品i不被选择,这种可能仅当不包含物品i也有可能找到价值更大的方案时才是可行的。
程序1是递归算法实现。对每个物品i,考查选择放入和不放入背包两种情况。函数knap(int s,int n)中,形参s是考查完物品i后背包还能装载的重量,n是考查完物品i后下一个待考查的物品。每次选择一个物品放入背包,那么剩余的物品和背包剩余重量又构成一个“背包问题”。根据注释,空(1)是考查物品n放入背包的情况,既然放入背包,则背包剩余可装重量为 s-w[n],继续考查物品n-1。这点可从主函数的调用形式“knap(S,N)”分析出。故空(1)应填“knap(s-w[n],n-1)”。空(2)是考查物品n不放入背包的情况,既然不放入背包,则背包可装重量仍为s,继续考查物品n-1。故空(2)应填“knap(s,n-1)”。
程序2是非递归算法实现,相对较难。算法思想仍是对每个物品i分别考查选择放入和不放入两种情况,借助栈实现,即数组stack。其实就是手动完成递归算法中由系统自动完成的压栈、出栈操作。
据注释“k=1时则求得一组解”可知k为是否求得解的标志:k=0表示没有解,继续求解。经分析,结构变量KNAPTP表示经过考查的物品:分量s表示考查过该物品后,背包所能盛放的物品的重量,分量n表示待考查的下一个物品在数组w中的下标,分量job表示物品当前的状态,job等于1表示物品n可以放入背包,job等于2表示物品不能放入背包,在以后的选取中将不再考虑该物品,初始时job等于0表示背包中没有放入任何物品。rep是一个标志变量,等于。表示结束当前的动作,等于1表示继续进行当前的动作;当栈顶物品不能装入背包时,将rep置为0,表示下一步不再从数组w中取物品。rep初值为1。x为工作节点。
while( (3) )循环体内的语句可以肯定是考查各个物品n的选择情况。对物品n,先考查将物品放入背包的情况。显然,如果物品n满足放入背包的条件,则空(4)和空(5)完成将物品放入背包的操作,其中空(4)应该是将工作节点x的分量s值减去所考查物品的重量。且n要减1,修改背包可容纳物品的重量和设置下一个待考查物品。而空(5)则需要将修改后的工作节点x送到栈顶,将下一个待考查的物品入栈。故空(4)应填“x.s-w[x.n--]”,空(5)应填“stack[++top]”。
if(!k)后的程序段是处理所考查的物品不满足放入背包的条件时的情况(rep=0,while(!k && rep)循环结束),则将该物品从背包中取出,修改其job值为2,用以标记该物品不能放入背包。修改完后跳出while(top>=1 && rep)循环,因此需要将rep置为0,用以结束循环。故空(6)应填“rep=0”。
转载请注明原文地址:https://kaotiyun.com/show/7fxZ777K
本试题收录于:
软件设计师上午基础知识考试题库软考中级分类
0
软件设计师上午基础知识考试
软考中级
相关试题推荐
DES加密算法采用的密码技术是(61),它采用(62)bit密钥对传输的数据进行加密,著名的网络安全系统Kerberos采用的是(63)加密技术。公钥密码是(64),常用的公钥加密算法有(65),它可以实现加密和数字签名。
DQDB同时支持(26)两种服务。DQDB子网的双总线结构由(27)总线以及接在这两条总线上的大量的节点组成。DQDB网络为双总线提供了(28)访问控制方式,其中能够提供非等时服务是(29),它用于(30)业务。
DQDB同时支持(26)两种服务。DQDB子网的双总线结构由(27)总线以及接在这两条总线上的大量的节点组成。DQDB网络为双总线提供了(28)访问控制方式,其中能够提供非等时服务是(29),它用于(30)业务。
FDDI与TokenRing都采用(21)传递协议,在FDDI的令牌帧中有(22),其主要作用是(23)。FDDI在(24)产生新令牌帧,允许在环上同时存在(25)。
图7-6是某交换机配置过程中,在配置模式下执行(58)命令的系统输出信息。
当网络规模扩大时,适合采用执行最短路径优先算法的IGP协议,每个路由器向网络中的其他路由器发布(52),当路由信息改变后,路由器按照Dijkstra算法更新路由表。
在UNIX操作系统中,以下Shell程序实现当用户键入的命令参数的个数为1时,执行cat$1命令;若用户键入的命令参数的个数为2时,执行cat>>$2<$1命令。case(36)in1)cat$1;;2)cat
利用ADSLG.lite的最高速率标准,下载一个150MB文件需要的最短时间约为(31)秒。
透明网桥的基本功能有学习、帧过滤和帧转发及生成树算法等功能,因此它可以决定网络中的路由,而网络中的各个站点均不负责路由选择。网桥从其某一端口收到正确的数据帧后,在其地址转发表中查找该帧要到达的目的站,若查找不到,则会(16);若要到达的目的站仍然在该端口上
在Linux操作系统下安装网卡,如果操作系统没有内置的驱动程序,那么用户必须(20),才能完成该网卡驱动程序的安装。
随机试题
在资产阶级宪法的分权制衡原则中,其三权指的是【】
患儿男性,10岁,主因“进行性吞咽困难6个月余”入院。入院前6个多月,患儿无明显诱因出现吞咽困难,进食干硬食物时明显,进流食、饮水尚可以耐受,伴嗳气,夜间熟睡时反流,量不多。无恶心、呕吐,无明显反酸、胃灼热表现,无食欲减退,未见发热,无皮疹,无口腔溃疡,无
作业活动必须能使患者的指尖、指腹得到外界反复刺激,如按键、弹琴等,此种作业活动用于
A、0.3B、0.95~1.05C、1.5D、6E、10在色谱定量分析中,分离度R应大于
患者,女,43岁。有风湿性心脏瓣膜病史。患者于户外运动时,突然出现右侧肢体无力,站立不稳,并有口角歪斜。该患者最可能是并发了
投标单位应按招标单位提供的工程量清单,逐一填写单价和合价。在开标后发现投标单位没有填写单价或合价的分项,则()。
背景材料:A安装公司承包了某42层办公大楼的机电安装工程,工程内容包括建筑给水排水、建筑电气、通风与空调、建筑智能化等工程,合同总工期为24个月。在施工准备阶段A公司项目部编制了材料供应计划,要求材料到达施工现场要验收确认后入库。项目部还编制了施工机具使
按《公路工程竣(交)工验收办法》的规定,公路工程(合同段)进行交工验收应具备的条件包括()。
在我国,学科课程标准和教科书的编排通常采取直线式和______两种。(2015.福建)
结合材料,回答问题:记者昨天从教育部新闻发布会上获悉,从今年秋季学期起,全国数百万就读于起始年级的小学生和初中生,语文、历史、道德与法治3个科目将统一使用“教育部编义务教育教科书”,现行的“人教版”“粤教版”“苏教版”“北京版”等版本教材将逐步被取代。
最新回复
(
0
)