题目内容 (请给出正确答案)
[主观题]

阅读下列程序说明和C代码,将应填入(n)处的字句写在对应栏内。 【说明】 “背包问题”的基本描述是:有

阅读下列程序说明和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){&nbs

查看答案
如搜索结果不匹配,请 联系老师 获取答案
您可能会需要:
您的账号:,可能会需要:
您的账号:
发送账号密码至手机
发送
更多“阅读下列程序说明和C代码,将应填入(n)处的字句写在对应栏内…”相关的问题

第1题

【问题4】(2分)说明实体El和E3之间可否有数据流,并解释其原因。

【问题4】(2分) 说明实体El和E3之间可否有数据流,并解释其原因。

点击查看答案

第2题

组合(Composition)和聚集(Aggregation)是UML中两种非常重要的关系。请说明组合和聚集分别表示什么

含义?两者的区别是什么?

点击查看答案

第3题

试题四(15分)阅读下列说明和C代码,回答问题1至问题3,将解答写在答题纸的对应栏内。【说明】某工程计

试题四(15分)

阅读下列说明和C代码,回答问题1至问题3,将解答写在答题纸的对应栏内。

【说明】

某工程计算中要完成多个矩阵相乘(链乘)的计算任务。

两个矩阵相乘要求第一个矩阵的列数等于第二个矩阵的行数,计算量主要由进行乘法运算的次数决定。采用标准的矩阵相乘算法,计算Am*n*Bn*p,需要m*n*p次乘法运算。

矩阵相乘满足结合律,多个矩阵相乘,不同的计算顺序会产生不同的计算量。以矩阵A110*100,A2100*5,A35*50三个矩阵相乘为例,若按(A1*A2)*A3计算,则需要进行10*100*5+10*5*50=7500次乘法运算;若按A1*(A2*A3)计算,则需要进行100*5*50+10*100*50=75000次乘法运算。可见不同的计算顺序对计算量有很大的影响。

矩阵链乘问题可描述为:给定n个矩阵<A1,A2,….An>,矩阵Ai的维数为pi-1*Pi,其中i = 1,2,….n。确定一种乘法顺序,使得这n个矩阵相乘时进行乘法的运算次数最少。

由于可能的计算顺序数量非常庞大,对较大的n,用蛮力法确定计算顺序是不实际的。经过对问题进行分析,发现矩阵链乘问题具有最优子结构,即若A1*A2*…*An的一个最优计算顺序从第k个矩阵处断开,即分为A1*A2*….Ak和Ak+1*Ak+2*…*An两个子问题,则该最优解应该包含A1*A2*…*Ak的一个最优计算顺序和Ak+1*Ak+2*…An的一个最优计算顺序。据此构造递归式,

其中,cost[i][j]表示Ai+1*Ai+2*...Aj+1的最优计算的计算代价。最终需要求解cost[0][n-1]。

【C代码】

算法实现采用自底向上的计算过程。首先计算两个矩阵相乘的计算量,然后依次计算3个矩阵、4个矩阵、…、n个矩阵相乘的最小计算量及最优计算顺序。下面是算法的C语言实现。

(1)主要变量说明

n:矩阵数

seq[]:矩阵维数序列

cost[][]:二维数组,长度为n*n,其中元素cost[i][j]表示Ai+1*Ai+2*…Aj+1的最优计算的计算代价

trace[][]:二维数组,长度为n*n,其中元素trace[i][j]表示Ai+1*Ai+2*Aj+1的最优计算对应的划分位置,即k

(2)函数cmm

define N 100

intcost[N][N];

inttrace[N][N];

int cmm(int n,int seq[]){

int tempCost;

int tempTrace;

int i,j,k,p;

int temp;

for( i=0;i<n;i++){ cost[i][i] =0;}

for(p=1;p<n;p++){

for(i=0; (1) ;i++){

(2);

tempCost = -1;

for(k = i;k<j;k++){

temp = (3) ;

if(tempCost==-1||tempCost>temp){

tempCost = temp;

(4) ;

}

}

cost[i][j] = tempCost;

trace[i][j] = tempTrace;

}

}

return cost[0][n-1];

}

【问题1】(8分)

根据以上说明和C代码,填充C代码中的空(1)~(4)。

【问题2】(4分)

根据以上说明和C代码,该问题采用了 (5) 算法设计策略,时间复杂度 (6) 。(用O符号表示)

【问题3】(3分)

考虑实例n=6,各个矩阵的维数:A1为5*10,A2为10*3,A3为3*12,A4为12*5,A5为5*50,A6为50*6,即维数序列为5,10,3,12,5,50,6。则根据上述C代码得到的一个最优计算顺序为 (7) (用加括号方式表示计算顺序),所需要的乘法运算次数为 (8) 。

点击查看答案

第4题

“处理1”能检查出日销售数据中的哪些错误。

点击查看答案

第5题

分别写出收款员日销售文件、商品文件、部门日销售汇总文件至少应包含哪些数据项。

点击查看答案

第6题

在Linux环境下,编辑哪个文件可以设置默认的运行级别?( )A./etc/gruconfB./etc/lilconfC./etc/ru

在Linux环境下,编辑哪个文件可以设置默认的运行级别?( )

A./etc/gruconf

B./etc/lilconf

C./etc/runlevel

D./etc/inittab

点击查看答案

第7题

请指出问题2中给出的读者、书目关系模式的主键,以及图书、借还记录和预约登记关系模式的主键和外键

点击查看答案

第8题

关于adsl,以下()。种说法是错误的A.可以充分利用现有电话线路提供数值接入B.上行和下行速率可以不

关于adsl,以下()。种说法是错误的

A.可以充分利用现有电话线路提供数值接入

B.上行和下行速率可以不同

C.liyong分离器实现语音信号和数字信号分离

D.使用4对线路进行信号传输

点击查看答案

第9题

对于不同的网络操作系统提供功能的描述,以下哪种说法错误的是()。A.windows nt server有良好的文

对于不同的网络操作系统提供功能的描述,以下哪种说法错误的是()。

A.windows nt server有良好的文件和打印能力,有优秀的目录服务

B.windows nt server有良好的文件和打印能力,没有优秀的目录服务

C.netware有良好的文件和打印能力,有优秀的目录服务

D.netware有良好的文件和打印能力,没有优秀的目录服务

点击查看答案

第10题

【问题3】(3分)图3-3中的类图设计采用了中介者(Mediator)设计模式,请说明该模式的内涵。

【问题3】(3分)

图3-3中的类图设计采用了中介者(Mediator)设计模式,请说明该模式的内涵。

点击查看答案
热门考试 全部 >
相关试卷 全部 >
账号:
你好,尊敬的上学吧用户
发送账号至手机
密码将被重置
获取验证码
发送
温馨提示
该问题答案仅针对搜题卡用户开放,请点击购买搜题卡。
马上购买搜题卡
我已购买搜题卡, 登录账号 继续查看答案
重置密码
确认修改
谢谢您的反馈

您认为本题答案有误,我们将认真、仔细核查,
如果您知道正确答案,欢迎您来纠错

警告:系统检测到您的账号存在安全风险

为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!

微信搜一搜
上学吧
点击打开微信
警告:系统检测到您的账号存在安全风险
抱歉,您的账号因涉嫌违反上学吧购买须知被冻结。您可在“上学吧”微信公众号中的“官网服务”-“账号解封申请”申请解封,或联系客服
微信搜一搜
上学吧
点击打开微信