网友您好, 请在下方输入框内输入要搜索的题目:
题目内容
(请给出正确答案)
如果仅需要求得最长公共子序列的代价,则最长公共子序列的空间复杂性可以降低到O(n),其中n是两个序列中任意一个的长度
参考答案和解析
动态规划法
更多 “如果仅需要求得最长公共子序列的代价,则最长公共子序列的空间复杂性可以降低到O(n),其中n是两个序列中任意一个的长度” 相关考题
考题
对于长度为m(m>1)的指定序列,通过初始为空的一个栈、一个队列后,错误的叙述是()A.若入栈和入队的序列相同,则出栈序列和出队序列可能相同B.若入栈和入队的序列相同,则出栈序列和出队序列可以互为逆序C.入队序列与出队序列关系为1:1,而入栈序列和出栈序列关系是1:n(n>=1)D.入栈序列和出栈序列关系为1:1,而入队序列与出队序列关系是1:n(n>=1)
考题
● 对于长度为m(m1)的指定序列,通过初始为空的一个栈、一个队列后,错误的叙述是 (61) 。(61)A. 若入栈和入队的序列相同,则出栈序列和出队序列可能相同B. 若入栈和入队的序列相同,则出栈序列和出队序列可以互为逆序C. 入队序列与出队序列关系为1:1,而入栈序列与出栈序列关系是1:n(n≥1)D. 入栈序列与出栈序列关系为1:1,而入队序列与出队序列关系是1:n(n≥1)
考题
对于求取两个长度为n的字符串的最长公共子序列(LCS)问题,利用(57)策略可以有效地避免子串最长公共子序列的重复计算,得到时间复杂度为O(n2)的正确算法。串<1,0,0,1,0,1,0,1,>和<0,1,0,1,1,0,1,1,>的最长公共子序列的长度为(58)。A.分治B.贪心C.动态规划D.分支一限界
考题
阅读以下说明和C++ 程序,将应填入(n)处的字句写在对应栏内。[说明]试从含有n个int 型数的数组中删去若干个成分,使剩下的全部成分构成一个不减的子序列。设计算法和编写程序求出数组的不减子序列的长。[C++ 程序]include<stdio.h>define N 100int b[]={9,8,5,4,3,2,7,6,8,7,5,3,4,5,9,1};int a [N];define n sizeofb/sizeofb[0]void main ( ){kit k,i,j;(1)(2)for (i=1;i<n; i++ ){for ( j=k;(3); j--);(4); /*长为 j+1 的子序列的终元素存储在 a[j+1]*/if ((5)k++; /*最长不减子序列长 k 增1*/}printf ( "K = %d\n ",k );}
考题
下面算法是实现对n个整数的序列进行选择排序,其中序列的“长度”n为问题的规模。该算法的时间复杂度为(11)。 void select_sort(int a[],int n){ //将a中整数序列重新排列成从小到大有序的整数序列 for(i=0;i<n-1;++i){ j=i; for(k=i+1;k<n;++k)if(a[k]<a[j])j=k; if(j!=i){w=a[j];a[j];a[i];a[i]=w} )//select_sortA.O(n2)B.O(n3)C.O(n4)D.O(n)
考题
对于求取两个长度为n的字符串的最长公共子序列问题,利用(41)策略可以有效地避免子串最长公共子序列的重复计算,得到时间复杂度为O(n2)的正确算法。A.贪心B.分治C.分支-限界D.动态规划
考题
对于求取两个长度为n的字符串的最长公共子序列(LCS)问题,利用(24)策略可以有效地避免子串最长公共子序列的重复计算,得到时间复杂度为O(n2)的正确算法。串 <1,0,0,1,O,1,0,1>和<0,1,0,1,1,0,1,1>的最长公共子序列的长度为(25)。A.分治B.贪心C.动态规划D.分支—限界
考题
阅读以下说明和流程图,填补流程图中的空缺,将解答填入答题纸的对应栏内。 【说明】 下面流程图的功能是:在给定的一个整数序列中查找最长的连续递增子序列。设序列存放在数组 A[1:n](n2)中,要求寻找最长递增子序列 A[K: K+L-1] (即A[K]A[K+1]A[K+L-1])。流程图中,用 Kj 和Lj 分别表示动态子序列的起始下标和长度,最后输出最长递增子序列的起始下标 K 和长度 L。 例如,对于序列 A={1 ,2,4,4 ,5,6,8,9,4,5,8},将输出K=4, L=5。【流程图】注:循环开始框内应给出循环控制变量的初值和终值,默认递增值为1,格式为: 循环控制变量=初值,终值
考题
阅读下列说明和C代码,回答问题l至问题3.将解答写在答题纸的对应栏内。【说明】计算一个整数数组a的最长递增子序列长度的方法描述如下:假设数组a的长度为n,用数组b的元素b[i]记录以a[i](0≤in)为结尾元素的最长递增子序列的长度,则数组a的最长递增子序列的长度为器;其中b[i]满足最优子结构,可递归定义为:【c代码】下面是算法的c语言实现。(1)常量和变量说明a:长度为n的整数数组,待求其最长递增子序列b:长度为n的数组,b[i]记录以a[i](0≤in)为结尾元素的最长递增子序列的长度,其中0≤inlen:最长递增子序列的长度i.j:循环变量temp,临时变量(2)C程序include stdio . hint maxL (int *b. int n) {int i. temp =0;For(i = 0; i n; i++){if (b[i] temp )Temp= b[i];}Return temp;【问题l】(8分)根据说明和C代码,填充C代码中的空(1)~(4)。【问题2】(4分)根据说明和C代码,算法采用了(5)设计策略,时间复杂度为(6)(用O符号表示)。【问题3】(3分)已知数组a={3,10,5,15,6,8},根据说明和C代码,给出数组b的元素值。
考题
阅读下列说明和C代码,回答问题,将解答填入答题纸的对应栏内。
【说明】
计算一个整数数组a的最长递增子序列长度的方法描述如下:
假设数组a的长度为n,用数组b的元素b[i]记录以a[i](0≤i<n)为结尾元素的最长递增子序列的长度为 ;其中b[i]满足最优子结构,可递归定义为:
【C代码】
下面是算法的C语言实现。
(1)常量和变量说明
a:长度为n的整数数组,待求其最长递增子序列
b:长度为n的数组,b[i]记录以a[i](0≤ilen:最长递增子序列的长度
i, j:循环变量
temp:临时变量
(2)C程序
#include int maxL(int*b, int n) {int i, temp=0;for(i=0; itemp) temp=b[i]; } return temp;}int main() { int n,a[100], b[100], i, j, len; scanf("%d", for(i=0;i
【问题1】(8分)
根据说明和C代码,填充C代码中的空(1)~(4)。
【问题2】(4分)
根据说明和C代码,算法采用了 (5) 设计策略,时间复杂度为 (6) (用O符号表示)。
【问题3】(5分)
已知数组a={3,10,5,15,6,8},据说明和C代码,给出数组b的元素值。
考题
求解两个长度为n的序列X和Y的一个最长公共子序列(如序列ABCBDAB和BDCABA的一个最长公共子序列为BCBA)可以采用多种计算方法。如可以采用蛮力法,对X的每一个子序列,判断其是否也是Y的子序列,最后求出最长的即可,该方法的时间复杂度为( )。经分析发现该问题具有最优子结构,可以定义序列长度分别为i和j的两个序列X和Y的最长公共子序列的长度为c[i,j],如下式所示。
采用自底向上的方法实现该算法,则时间复杂度为(请作答此空)A.O(n^2)
B.O(n^21gn)
C.O(n^3)
D.O(n2^n)
考题
阅读下列说明和C代码,回答下列问题。[说明] 计算一个整数数组a的最长递增子序列长度的方法描述如下: 假设数组a的长度为n,用数组b的元素b[i]记录以a[i](0≤i<n”)为结尾元素的最长递增子序列的长度为
其中b[i]满足最优子结构,可递归定义为:
[C代码] 下面是算法的C语言实现。 10常量和变量说明 a:长度为n的整数数组,待求其最长递增子序列 b:长度为n的数组,b[i]记录以a[i](0≤i<n”)为结尾元素的最长递增子序列的长度,其中0≤i<n len:最长递增子序列的长度 i,j:循环变量 temp:临时变量 11C程序 # jnclude<stdio,h> mtmaxL(int*b,mt n) { mt I, temp=0 for(i=0; i<n; i++) { (b[i]>temp) temp=b[i] return temp; int main12 { int n,a[100],b[100],i,j,len; scanf(" % d", for(i=0;i<n;i++) { scanf("% d", ___1___: for(i=1;i<n;i++) { for(j=0,len=0;___2___;j++){ if( ___3___ } Printf("len:% d\n",maxL(b,n)) Primtf("\n") }1~4、 根据说明和C代码,填充C代码中的空______~______。5、 根据说明和C代码,算法采用了______设计策略,时间复杂度为______(用O符号表示)6、 已知数组a={3,10,5,15,6,8},据说明和C代码,给出数组b的元素值。
考题
给出一个由n个数组成的序列A[1…n],要求找出它的最长单调上升子序列,设m[i](1≤i≤n),表示以A[i]结尾的最长单调上升子序列的长度,则m[1]=1,m[i](1A、m[i]=1+max{0,m[k](A[k]A[i],1≤ki)}B、m[i]=1+m[k](k=i-1i1)C、m[i]=1+max{0,m[k](A[k]≤A[i],1≤ki)}D、m[i]=max{0,m[k](A[k]A[i],1≤ki)}
考题
已知序列X={x1,x2,…,xm},序列Y={y1,y2,…,yn},使用动态规划算法求解序列X和Y的最长公共子序列,其最坏时间复杂度为()。A、O(m*n)B、O(m+n)C、O(m*2n)D、O(n*2m)
考题
下列调用序列的说法正确的是:()。A、如果在调用序列中没有一个子序列为所发生的某一个异常定义处理程序,则定义相应处理程序B、如果在调用序列中没有一个子序列为所发生的某一个异常定义处理程序,则返回错误信息C、如果在调用序列中没有一个子序列为所发生的某一个异常定义处理程序,则终止该程序D、如果在调用序列中没有一个子序列为所发生的某一个异常定义处理程序,则程序中断
考题
单选题已知序列X={x1,x2,…,xm},序列Y={y1,y2,…,yn},使用动态规划算法求解序列X和Y的最长公共子序列,其最坏时间复杂度为()。A
O(m*n)B
O(m+n)C
O(m*2n)D
O(n*2m)
考题
问答题给定一个由n个数组成的序列,要求该序列的最长单调上升子序列,请设计对应的算法并分析其时间复杂度,如果时间复杂度劣于O(nlogn)的,将其优化为O(nlogn)时间复杂度的算法。
考题
单选题下列调用序列的说法正确的是:()。A
如果在调用序列中没有一个子序列为所发生的某一个异常定义处理程序,则定义相应处理程序B
如果在调用序列中没有一个子序列为所发生的某一个异常定义处理程序,则返回错误信息C
如果在调用序列中没有一个子序列为所发生的某一个异常定义处理程序,则终止该程序D
如果在调用序列中没有一个子序列为所发生的某一个异常定义处理程序,则程序中断
热门标签
最新试卷