阅读下列说明和C代码,将应填入 (n) 处的字句。[说明]设某一机器由n个部件组成,

题型:填空题

问题:

阅读下列说明和C代码,将应填入 (n) 处的字句。

[说明]

设某一机器由n个部件组成,每一个部件都可以从m个不同的供应商处购得。供应商j供应的部件i具有重量wij和价格cij。设计一个算法,求解总价格不超过上限cc的最小重量的机器组成。

采用回溯法来求解该问题:

首先定义解空间。解空间由长度为n的向量组成,其中每个分量取值来自集合1,2,…,m),将解空间用树形结构表示。

接着从根结点开始,以深度优先的方式搜索整个解空间。从根结点开始,根结点成为活结点,同时也成为当前的扩展结点。向纵深方向考虑第一个部件从第一个供应商处购买,得到一个新结点。判断当前的机器价格(c11)是否超过上限(cc),重量(w11)是否比当前已知的解(最小重量)大,若是,应回溯至最近的一个活结点;若否,则该新结点成为活结点,同时也成为当前的扩展结点,根结点不再是扩展结点。继续向纵深方向考虑第二个部件从第一个供应商处购买,得到一个新结点。同样判断当前的机器价格(c11+c21)是否超过上限(cc),重量(w11+w21)是否比当前已知的解(最小重量)大。若是,应回溯至最近的一个活结点;若否,则该新结点成为活结点,同时也成为当前的扩展结点,原来的结点不再是扩展结点。以这种方式递归地在解空间中搜索,直到找到所要求的解或者解空间中已无活结点为止。

[C代码]

下面是该算法的C语言实现。

(1)变量说明

n:机器的部件数

m:供应商数

cc:价格上限

w[][]:二维数组,w[i][j]表示第j个供应商供应的第i个部件的重量

c[][]:二维数组,c[i]D]表示第j个供应商供应的第i个部件的价格

bestW:满足价格上限约束条件的最小机器重量

bestC:最小重量机器的价格

bestX[]:最优解,一维数组,bestX[i]表示第i个部件来自哪个供应商

cw:搜索过程中机器的重量

cp:搜索过程中机器的价格

x[]:搜索过程中产生的解,x[i]表示第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<n; j++)

(1) ;

return 1;

if (cp<=cc)(/*有解*/

found=1;

for(j=0; (2) ; j++)

/*第i个部件从第j个供应商购买*/

(3) ;

cw=cw+w[i] [j];

cp=cp+c[i] [j];

if (cp<=cc&& (4) )/*深度搜索,扩展当前结点*/

if (backtrack(i+1)) found -1; )

/*回溯*/

cw=cw - w[i] [j];

(5) ;

return found;

(1)处应填()。

考点:计算机软件水平考试中级软件设计师中级软件设计师2011下半年下午试题
题型:填空题

我会选(选出带横线字的准确解释,把序号填在括号里)

平 ①光滑,不倾斜;②安定;③一般的,普通的;④抑止。

A.这一天风浪静,船上的人都站在甲板上。(     )

B.他和时一样,来得很早。(     ) 

C.请你一下气再说。(     ) 

D.工人师傅把地板铺得平整整。(     )

题型:填空题

汽车排气污染物的主要来源有()。

A.发动机排气管排出的废气

B.曲轴箱窜气

C.进气门窜气

D.汽油蒸气

题型:填空题

使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正错误,使得程序输出:
Hello
test
注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。
试题程序:
#include<iostream>
//********error********
template(T)
void fun(T t)

std::cout<<"test"<<std::end1;

//********error********
template<bool>
void fun(bool t)

std::cout<<(t"Hello":"Hi")<<std::end1;

int main()

//********error********
bool flag=TRUE;
fun(flag);
fun((int)flag);
return 0;

题型:填空题

除手脚掌外,皮脂腺遍布全身,以()最多。

题型:填空题

根据合同法的规定,下列合同属于无效合同的是()。

A、一方以欺诈、胁迫的手段订立,损害国家利益的合同

B、恶意串通,损害国家、集体或第三人利益的合同

C、以合法形式掩盖非法目的的合同

D、违反法律、行政法规强制性规定的合同

更多题库