更多"[说明] “背包问题”的基本描述是:有一个背包,能盛放的物品总重量为"的相关试题:
[简答题]【说明】
“背包问题”的基本描述是:有一个背包,能盛放的物品总重量为S,设有N件物品,其重量分别为w1;w2,……,wn,希望从N件物品中选择若干件物品,所选物品的重量之和恰能放入该背包,即所选物品的重量之和等于S。
如下程序均能求得“背包问题”的一组解,其中程序4.1是“背包问题”的递归解法,而程序4.2是“背包问题”的非递归解法。
【程序4.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) ))|
printf("%4d",w[n]);return 1;
return (2) ;
main( )
if(knap(S,N))printf("OK!/n");
else printf("NO!/n");
【程序4.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("OK!/n");
else printf("NO!/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=|;Stack[top]=x;<
[简答题]【说明】
“背包问题”的基本描述是:有一个背包,能盛放的物品总重量为S,设有N件物品,其重量分别为w1;w2,……,wn,希望从N件物品中选择若干件物品,所选物品的重量之和恰能放入该背包,即所选物品的重量之和等于S。
如下程序均能求得“背包问题”的一组解,其中程序4.1是“背包问题”的递归解法,而程序4.2是“背包问题”的非递归解法。
【程序4.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) ))|
printf("%4d",w[n]);return 1;
} return (2) ;
}
main( ){
if(knap(S,N))printf("OK!/n");
else printf("NO!/n");
}
【程序4.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("OK!/n");
else printf("NO!/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=|;Stack[top]=x;
k=0;
while(
[填空题][说明2]
[C程序代码2]是能求得“背包问题”的一组解的递归算法程序。“背包问题”的基本描述是:有一个背包,能盛放的物品总重量为S,设有Ⅳ件物品,其重量分别为W1,W2,…,Wn,希望从N件物品中选择若干件物品,所选物品的重量之和恰能放入该背包中,即所选物品的重量之和等于S。
[C程序代码2]
BTREE;
#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) ) )
printf( "4d",w[n] );
return 1 ;
return (2) ;
main ( )
if (knap(S,N) )
printf( "OK!/n" );
else
printf ( "N0 ! /n" ) ;
请将[C程序代码2]中空缺处的内容填补完整。
[简答题]
阅读以下技术说明和C语言代码,根据要求回答问题1至问题6。
【说明】
有两个进程(编号分别为0和1)需要访问同一个共享资源。为了解决竞争条件(race
condition)的问题,需要实现一种互斥机制,使得在任何时刻只能有一个进程访问该共享资源。以下【C代码1】给出了一种实现方法。
【C代码1】
int flag[2];
/+flag数组,初始化为FALSE*/
Enter_Critical_Section(int
my_task_id, int other_task_id)
{ while
(flag[other_task_id]==TRUE); /*空循环语句*/
flag[my_task_id]=TRUE;
}
Exit_Critical_Section(int my_task_id, int other_task_id)
{
flag[my_task_id]=FALSE;
}
当一个进程要访问临界资源时,就可以调用【C代码1】给出的这两个函数。【C代码2】给出了进程0的一个例子。
【C代码2】
Enter_Critical_Section(0,1);
……使用这个资源……
Exit_Critical_Section(0,1);
……做其他的事情……
【问题1】 什么是临界资源(critical
resource)请用100字以内的文字简要说明。 |
[单项选择]
利用贪心法求解0/1背包问题时, (26) 能够确保获得最优解。用动态规划方求解O/1背包问题时,将“用前i个物品来装容量是x的背包”的0/1背包问题记为KNAP(1,i,X)设fi(X)是KNAP(1,i,X)最优解的效益值,第j个物品的重量和放入背包后取得效益值分别为W和p(j=1~n),则依次求解f0(X),f1(X),…,fn(X)的过程中使用的递推关系式为 (27) 。
(26)处填()。
A. 优先选取重量最小的物品
B. 优先选取效益最大的物品
C. 优先选取单位重量效益最大的物品
D. 没有任何准则
[单项选择]某项目进行到第70天,挣值的三个基本参数分别为:BCWS为800万,BCWP为750万,ACWP为780万,下列说法中正确的是()。
A. 该项目进度滞后且费用超支
B. 该项目进度提前且费用节约
C. 该项目进度滞后但费用节约
D. 该项目进度提前但费用超支
[单项选择]《中国药典》2010版规定平均重量在1.0-3.0g的栓剂,其重量差异限度为()
A. ±5.0%
B. ±7.5%
C. ±10%
D. ±12.5%
E. ±15%
[判断题]如买卖合同中未具体约定货物重量以何种方式计量,依据国际贸易惯例,应以货物毛重计算其重量。()