首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 设某一机器由n个部件组成,每一个部件都可以从m个不同的供应商处购得。供应商j供应的部件i具有重量Wij和价格Cij。设计一个算法,求解总价格不超过上限cc的最小重
阅读下列说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 设某一机器由n个部件组成,每一个部件都可以从m个不同的供应商处购得。供应商j供应的部件i具有重量Wij和价格Cij。设计一个算法,求解总价格不超过上限cc的最小重
admin
2015-06-03
64
问题
阅读下列说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
设某一机器由n个部件组成,每一个部件都可以从m个不同的供应商处购得。供应商j供应的部件i具有重量W
ij
和价格C
ij
。设计一个算法,求解总价格不超过上限cc的最小重量的机器组成。
采用回溯法来求解该问题:
首先定义解空间。解空间由长度为n的向量组成,其中每个分量取值来自集合{1,2,…,m},将解空间用树形结构表示。
接着从根结点开始,以深度优先的方式搜索整个解空间。从根结点开始,根结点成为活结点,同时也成为当前的扩展结点。向纵深方向考虑第一个部件从第一个供应商处购买,得到一个新结点。判断当前的机器价格(C
11
)是否超过上限(cc),重量(W
11
)是否比当前已知的解(最小重量)大,若是,应回溯至最近的一个活结点;若否,则该新结点成为活结点,同时也成为当前的扩展结点,根结点不再是扩展结点。继续向纵深方向考虑第二个部件从第一个供应商处购买,得到一个新结点。同样判断当前的机器价格(C
11
+C
21
)是否超过上限(cc),重量(W
11
+W
21
)是否比当前已知的解(最小重量)大。若是,应回溯至最近的一个活结点;若否,则该新结点成为活结点,同时也成为当前的扩展结点,原来的结点不再是扩展结点。以这种方式递归地在解空间中搜索,直到找到所要求的解或者解空间中已无活结点为止。
【C代码】
下面是该算法的C语言实现。
(1)变量说明。
n:机器的部件数。
m:供应商数。
cc:价格上限。
w[][]:二维数组,w
[j]表示第j个供应商供应的第i个部件的重量。
c[][]:二维数组,c
[j]表示第j个供应商供应的第i个部件的价格。
best1W:满足价格上限约束条件的最小机器重量。
bestC:最小重量机器的价格。
bestX[]:最优解,一维数组,bestX
表示第i个部件来自哪个供应商。
cw:搜索过程中机器的重量。
cp:搜索过程中机器的价格。
x[]:搜索过程中产生的解,x
表示第i个部件来自哪个供应商。
i:当前考虑的部件,从0~n-1。
j:循环变量。
(2)函数backtrack。
int n=3;
int m=3;
int cc=4;
int w[3][3]={{1,2,3},{3,2,1},{2,2,2}};
int c[3][3]={{1,2,3),{3,2,1),{2,2,2)};
int bestW=8;
int bestC=0;
int bestX[3]={0,0,0);
int cw=0;
int cp=0;
int x[3]={0,0,0);
int backtrack(int i){
int j=0;
int found=0;
if(i>n-1){/*得到问题解*/
bestW=cw;
bestC=cp;
for(j=0;j
(1);
}
return 1;
}
if(cp<=cc){/*有解*/
found=1;
}
for(j=0;(2);j++){
/*第i个部件从第j个供应商购买*/
(3);
cw=cw+w
[j];
cp=cp+c
[j];
if(cp<=cc && (4) {/*深度搜索,扩展当前结点*/
if(backtrack(i+1)){found=1;}
}
/*回溯*/
cw=cw -w
[j];
(5);
}
return found;
}
选项
答案
(1)bestX[j]=x[j]。 (2)j
解析
本题考查回溯法的应用。
在题目的描述中告诉了回溯法的基本思想。其实回溯法主要有两个过程,一个是向前探索,只要在当前满足设定的判定条件时,才向前探索;而另外一个就是回溯,在两种情况下,需要回溯,其分别是当不满足设定条件时和求的一个解的时候。
下面具体分析本试题。根据题目给出的注释,已知第(1)空所处的位置是得到问题的一个解时,根据题目描述,应该是将这个解记录下来,存放到bestX数组当中,而求得的解是保存在x数组当中的,因此这里需要循环将x数组中的元素值赋给bestX数组,因此第(1)空答案为bestX[j]=x[j]。
第(2)空是for循环中的循环判定条件,根据题目注释知道该循环的作用是确定第i个部件从第j个供应商购买,那么在确定第i个部件到底是从哪个供应商购买时,需要比较从各供应商购买的情况,因此循环的次数为供应商数,因此第(2)空答案是j
=j。
第(4)空是if语句中的一个条件,根据题目注释,可以知道如果该if语句表达式的计算结果为真,需要进行深度搜索,扩展当前结点,那么如果要继续向前探索,就需要满足设定的条件,也就是当前总重量要小于bestW,而当前总价格要小于等于cc,因此第(4)空的答案应该填cw
根据题目注释,第(5)空是在回溯下面的语句,根据回溯的原则可以知道,回溯时,要将当前考虑的结点的重量和价格从总重量和总价格中减去,因此第(5)的答案是 cp=cp-c
[j]。
转载请注明原文地址:https://kaotiyun.com/show/mdDZ777K
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
IPSec工作在TCP/IP协议栈的(1),为TCP/IP通信提供访问控制、(2)、数据源验证、抗重放、(3)等多种安全服务。IPSec的两种工作模式分别是(4)和(5)。(1)~(5)备选答案:A.应用层B.网络层C.数据链
阅读以下说明,回答问题1至问题7,将解答填入对应的解答栏内。【说明】某网络拓扑结构如下图所示。网络A中的DNS_Server1和网络B中的DNSSeNer2分别安装有WindowsServer2003并启用了DNS服务。DNS_Server
解释图10-2中的PVC和SVC。支持可变比特率(VBR)业务;支持面向连接的业务,其比特率是可变的。常见业务为压缩的分组语音通信和压缩的视频传输。请问根据其业务描述是属子图10-3中高层中的哪一级?
阅读以下说明,回答问题1至问题3。【说明】Plug-gw是Linux配置中常带的通用代理程序,可用来代理POP3、HTTP等应用层服务。附图3为某网络结构图,内部网段上有一台POP3服务器和一台FTP服务器。代理服务器中使用ipchains包过滤
在路由器上采用了NAT技术,请用300字以内的文字简要说明NAT技术中的动态地址翻译和IP地址伪装各有什么技术特点?阅读图5-18中给出的网络拓扑结构图,结合边界路由器Router的NAT表,将以下关于主机B向内部网络发出请求时,边界路由器Router
在RAS上存在着两个RJ45的端口,分别为Console与AUX,请问这两个端口的用途是什么?(控制在100个字以内)在第4步中,进入虚拟操作台后,在IOS环境下输入了如下的配置,请解释(1)~(4)处的标有下划线部分配置命令的含义(“◇”后为配置内容
阅读以下有关网络规划的叙述,回答问题1、问题2和问题3。网络工程是一项复杂的系统工程,一般可分为网络规划、网络设计、工程实施、系统测试验收和运行维护等几个阶段。网络规划是在需求分析的基础上,进行系统可行性分析和论证,以确定网络总体方案。网络规划阶段
L2TP协议是一种基于(1)协议的二层隧道协议,它结合了Cisco的L2F和MicrosoftPPTP的优点。该协议报文在传输层封装(2)协议之上,为了保证传输的可靠性,L2TP协议对控制报文采取了(3)机制,并要求tunne1对端设备在隧道(tunne
阅读以下关于交换机VTP协议配置的技术说明,根据要求回答问题1至问题4。【说明】利用VLAN技术可以把物理上连接的网络从逻辑上划分为多个不同的虚拟子网,可以对各个子网实施不同的管理策略。利用showvtpstatus命令在某台交换机的特权模式
随机试题
Here’ssomegoodnewsforparentsoftweensandteens:yourule.Thatmaybehardtobelievesometimes.Andit’struekids
诊断主动脉夹层,最简便有效的检查是
依据斗谱编排基本原则,宜放在药斗架最底层的大药斗内是()。
求图1-22悬臂式起重机铰支座A的约束反力和斜杆BC所受的力()。
某企业某会计期初资产总额为100000元,当期期末负债总额比期初减少30000元,期末所有者权益比期初增力40000元。则该企业期末资产总额为()元。
厅(局)级正职的警衔为一级警督至二级警监。()
面积为900,(平方米的圆形,在半径增加后面积达到1600~平方米,则圆的半径增加了多少?()
国务院组成人员有()。
A、Lastyear.B、Threedays.C、Nextmonth.B题目问:Howlongwillyoustayhere?正确回答是表示一段时间的短语:[B]Threedays.正确。
WhatkindofcompanyisKleinfelder?Kleinfelderisa/an______company.HowmanynewemployeesareneededinKleinfelder?Th
最新回复
(
0
)