网友您好, 请在下方输入框内输入要搜索的题目:

题目内容 (请给出正确答案)

阅读以下程序说明和C程序,将程序段中(1)~(7)空缺处的语句填写完整。

【说明】

【C程序1】用回溯算法来产生由0或1组成的2m个二进位串,使该串满足以下要求。

视串为首尾相连的环,则由m位二进制数字组成的2m个子序列,每个可能的子序列都互不相同。例如,如果m=3,在串11101000首尾相连构成的环中,由3位二进制数字组成的每个可能的子序列都在环中恰好出现一次,它们依次是111,110,101,010,100,000,001,011,如图2-14所示。

【C程序2】是求“背包问题”的一组解的递归算法程序。“背包问题”的基本描述是:有一个背包,能盛放的物品总重量为S,设有N件物品,其重量分别为W1,W2,…,Wn,希望从N件物品中选择若干件物品,所选物品的重量之和恰能放入该背包,即所选物品的重量之和等于S。

【C程序1】

define N 1024

define M 10

int b [N+M-1]

int equal(int k, int j int m) {

int i;

for(i=0; i<m; i++

if ( b[ k + i] (1) )

return 0;

return 1; }

int exchange (int k, int m, int v){

while ( b[ k + m - 1 ) == v ) {

b[ kncm--i]=! v (2);

}

(3)=v;

return k;

}

init ( iht v) {

int k

for( k = 0;K = N + M - 1;k++)

b[k] = v;

}

main ( ) {

int m, v, k, n, j;

printf ('Enter m (l<m<10) , v v=0, v=1)\ n") ;

scanf (" %d%d , &m, &v);

n = 0x01 << m;

init (!v);

k=0;

while((4)< n)

for (j=0;j<k;j++)

if (equal (k, j, m)) {

k=exchange (k, m, v)

j=(5);

}

for (k= 0 ;k<n ;k++ )

print{ (" %d\ n" , b[k]) ;

}

}

【C程序2】

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 ((6))) {

printf( "4d", w[n]);

return 1;

}

return (7)

}

main ( ) {

if (knap (S, N)

printf("OK:\n");

else

printf("NO!\n")

}


参考答案

更多 “ 阅读以下程序说明和C程序,将程序段中(1)~(7)空缺处的语句填写完整。【说明】【C程序1】用回溯算法来产生由0或1组成的2m个二进位串,使该串满足以下要求。视串为首尾相连的环,则由m位二进制数字组成的2m个子序列,每个可能的子序列都互不相同。例如,如果m=3,在串11101000首尾相连构成的环中,由3位二进制数字组成的每个可能的子序列都在环中恰好出现一次,它们依次是111,110,101,010,100,000,001,011,如图2-14所示。【C程序2】是求“背包问题”的一组解的递归算法程序。“背包问题”的基本描述是:有一个背包,能盛放的物品总重量为S,设有N件物品,其重量分别为W1,W2,…,Wn,希望从N件物品中选择若干件物品,所选物品的重量之和恰能放入该背包,即所选物品的重量之和等于S。【C程序1】define N 1024define M 10int b [N+M-1]int equal(int k, int j int m) {int i;for(i=0; i<m; i++if ( b[ k + i] (1) )return 0;return 1; }int exchange (int k, int m, int v){while ( b[ k + m - 1 ) == v ) {b[ kncm--i]=! v (2);}(3)=v;return k;}init ( iht v) {int kfor( k = 0;K = N + M - 1;k++)b[k] = v;}main ( ) {int m, v, k, n, j;printf ('Enter m (l<m<10) , v v=0, v=1)\ n") ;scanf (" %d%d , m, v);n = 0x01 << m;init (!v);k=0;while((4)< n)for (j=0;j<k;j++)if (equal (k, j, m)) {k=exchange (k, m, v)j=(5);}for (k= 0 ;k<n ;k++ )print{ (" %d\ n" , b[k]) ;}}【C程序2】include<stdio. h>define N 7define S 15int 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 ((6))) {printf( "4d", w[n]);return 1;}return (7)}main ( ) {if (knap (S, N)printf("OK:\n");elseprintf("NO!\n")} ” 相关考题
考题 阅读以下说明和流程图,填补流程图中的空缺(1)~(5),将解答填入对应栏内。【说明】下面流程图的功能是:在已知字符串A中查找特定字符串B,如果存在,则输出B串首字符在A串中的位置,否则输出-1。设串A由n个字符A(0),A(1),…,A(n-1)组成,串B由m个字符B(0),B(1),…,B(m-1)组成,其中n≥m>0。在串A中查找串 B的基本算法如下:从串A的首字符A(0)开始,取子串A(0)A(1)…A(m-1)与串B比较;若不同,则再取子串A(1)A(2)…A(m)与串B比较,依次类推。例如,字符串“CABBRFFD”中存在字符子串“BRF”(输出3),不存在字符子串“RFD”(输出-1)。在流程图中,i用于访问串A中的字符(i=0,1,…,n-1),j用于访问串B中的字符(j=0,1,…,m-1)。在比较A(i)A(i/1)…A(i+m-1)与B(0)B(1)…B(m-1)时,需要对 A(i)与B(0)、A(i+1)与B(1)、…、A(i+j)与B(j)等逐对字符进行比较。若发现不同,则需要取下一个子串进行比较,依此类推。【流程图】

考题 阅读以下说明和流程图,填补流程图中的空缺,将解答填入答题纸的对应栏内。 [说明] 下面流程图的功能是:在给定的两个字符串中查找最长的公共子串,输出该公共子串的长度L及其在各字符串中的起始位置(L=0时不存在公共字串)。例如,字符串"The light is not bright tonight"与"Tonight the light is not bright"的最长公共子串为"he light is not bright",长度为22,起始位置分别为2和10。 设A[1:M]表示由M个字符A[1],A[2],…,A[M]依次组成的字符串;B[1:N]表示由N个字符B[1],B[2],…,B[N]依次组成的字符串,M≥N≥1。 本流程图采用的算法是:从最大可能的公共子串长度值开始逐步递减,在A、B字符串中查找是否存在长度为L的公共子串,即在A、B字符串中分别顺序取出长度为L的子串后,调用过程判断两个长度为L的指定字符串是否完全相同(该过程的流程略)。 [流程图]

考题 阅读下列说明和图,回答问题,将解答填入答题纸的对应栏内。 阅读以下说明和C函数,将应填入 (n) 处的语句或语句成分写在答题纸的对应栏内。 【说明1】 函数deldigit(char *s) 的功能是将字符串s中的数字字符去掉,使剩余字符按原次序构成一个新串,并保存在原串空间中。其思路是:先申请一个与s等长的临时字符串空间并令t指向它,将非数字字符按次序暂存入该空间,最后再拷贝给s。 【C函数】 char *t = (char *)malloc( (1) ); /*申请串空间*/ int i, k = 0; if (!t) return; for(i = 0; i =’0’ if ( (4) ) { ch = *s; *s = *(s+len-1); *(s+len-1) = ch; reverse( (5) ); }}

考题 8、阅读以下程序,填写运行结果_______________. def f(n): if n%2==0: print('偶',end='') #此处''为空字符串 else: print('奇',end='') #此处''为空字符串 for i in [1,5,2,6,7]: f(i)

考题 3、阅读以下程序,填写运行结果___________. dic={'a':2,'b':1,'c':3} for i in dic.items(): print(i[0]*i[1],end='')#此处''为空字符串

考题 8、阅读以下程序,填写运行结果________________. def f(): m=0 m=m+1 print(m,end='') #此处''为空字符串 f() f()

考题 阅读以下程序,填写运行结果_______________. def f(n): if n%2==0: print('偶',end='') #此处''为空字符串 else: print('奇',end='') #此处''为空字符串 for i in [1,5,2,6,7]: f(i)

考题 阅读以下程序,填写运行结果________________. def f(): m=0 m=m+1 print(m,end='') #此处''为空字符串 f() f()

考题 阅读以下程序,填写运行结果___________. dic={'a':2,'b':1,'c':3} for i in dic.items(): print(i[0]*i[1],end='')#此处''为空字符串