首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 设某一机器由n个部件组成,每一个部件都可以从m个不同的供应商处购得。供应商j供应的部件i具有重量Wij和价格Cij。设计一个算法,求解总价格不超过上限cc的最小重
阅读下列说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 设某一机器由n个部件组成,每一个部件都可以从m个不同的供应商处购得。供应商j供应的部件i具有重量Wij和价格Cij。设计一个算法,求解总价格不超过上限cc的最小重
admin
2015-06-03
49
问题
阅读下列说明和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
软件设计师下午应用技术考试
软考中级
相关试题推荐
请在(1)、(2)、(3)、(4)空白处填写恰当的内容。Web客户机与服务器共同遵守(1)协议,其工作过程是;Web客户端程序根据输入的(2)连接到相应的Web服务器上,并获得指定的Web文档。动态网页以(3)程序的形式在服务器端处理,并给客户端返
在Windows2003中,(1)不能实现NAT功能。A.终端服务管理器B.Internet连接共享C.路由和远程访问在部门B的服务器2中,如果将ISP分配的可用公网IP地址添加到地址池(如左下图所示),那么服务器1收到来
为了使DNS_Server1能正确解析本地Web站点的域名,需对DNS_Server1中的DNS服务进行配置。在图1所示的对话框中,新建的区域名称是(1);在图2所示的对话框中,添加的新建主机名称为(2),IP地址栏应填入(3)。DNS_Server
阅读以下说明,回答问题1至问题7,将解答填入对应的解答栏内。【说明】某网络拓扑结构如下图所示。网络A中的DNS_Server1和网络B中的DNSSeNer2分别安装有WindowsServer2003并启用了DNS服务。DNS_Server
下图为RouterB上的路由表信息,写出查询路由表的命令:(1)。该路由器上运行的路由协议为(2)。行政办公楼部门A所属网络地址是(3),部门B所属网络地址是(4)。在主机D上使用命令TracertDNSServer,显示结
阅读以下说明,回答问题1、问题2、问题3和问题4,将解答填入对应栏内。[说明]ATM(AsynchronousTransferMode)顾名思义就是异步传输模式,是国际电信联盟ITU-T制定的标准。实际上在20世纪80年代中期,人们就已经
阅读以下家庭HFC宽带接入Internet网的技术说明,结合网络连接拓扑图,根据要求回答问题1至问题5。【说明】混合光纤一同轴电缆网(即HFC网)将光纤敷设到小区,再通过光电转换节点,利用CATV的总线式同轴电缆网连接到用户,从而为用户提供Int
在路由器上采用了NAT技术,请用300字以内的文字简要说明NAT技术中的动态地址翻译和IP地址伪装各有什么技术特点?阅读图5-18中给出的网络拓扑结构图,结合边界路由器Router的NAT表,将以下关于主机B向内部网络发出请求时,边界路由器Router
简述网络规划阶段需求分析的方法和解决的问题。(控制在100个字以内)在网络规划阶段“系统可行性分析和论证”的主要内容是什么?(控制在100个字以内)
随机试题
A、苯巴比妥B、司可巴比妥钠C、硫喷妥钠D、异戊巴比妥E、异戊巴比妥钠在氢氧化钠液中可与铅离子反应生成白色沉淀,加热后,沉淀变成黑色的是
属于黄酮类的是属于碳苷的是
对手术室医护人员的手、物品进行定期细菌培养的周期是
土坝的施工放样内容包括()等。
资产负债表中的“朱分配利润”项目。应根据()填列。
当游客心脏病突发时,导游应该立即组织游客抬其送往医院救治,以免贻误时间。()
已知三棱锥P—ABC的外接球半径为3,且棱PA、PB、PC之间两两垂直,则三棱锥P—ABC的侧面积的最大值为().
(2000年)设函数S(χ)=∫0χ|cost|dt(1)当n为正整数,且nπ≤χ<(n+1)π时,证明2n≤S(χ)<2(n+1).(2)求
A、 B、 C、 A
A、Providingtechnologicaltraining.B、Sendingmedicalstafftothecountry.C、Transportingfoodanddailynecessities.D、Appeali
最新回复
(
0
)