单选题给出一个由n个数组成的序列A[1…n],要求找出它的最长单调上升子序列,设m[i](1≤i≤n),表示以A[i]结尾的最长单调上升子序列的长度,则m[1]=1,m[i](1Am[i]=1+max{0,m[k](A[k]A[i],1≤ki)}Bm[i]=1+m[k](k=i-1i1)Cm[i]=1+max{0,m[k](A[k]≤A[i],1≤ki)}Dm[i]=max{0,m[k](A[k]A[i],1≤ki)}

单选题
给出一个由n个数组成的序列A[1…n],要求找出它的最长单调上升子序列,设m[i](1≤i≤n),表示以A[i]结尾的最长单调上升子序列的长度,则m[1]=1,m[i](1
A

m[i]=1+max{0,m[k](A[k]<A[i],1≤k<i)}

B

m[i]=1+m[k](k=i-1&&i>1)

C

m[i]=1+max{0,m[k](A[k]≤A[i],1≤k<i)}

D

m[i]=max{0,m[k](A[k]<A[i],1≤k<i)}


参考解析

解析: 暂无解析

相关考题:

若一个栈的输出序列是1,2,3,...,n,输出序列的第一个元素是n,则第i个输出元素是n-i+1。( ) 此题为判断题(对,错)。

已知一个栈的进栈序列是1,2,3,…,n,其输出序列的第一个元素是i(1≤i≤n),则第j(1≤j≤n)个出栈元素是()。 A.iB.n-iC.j-i+1D.不确定

阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。[说明]这是一个求解Josephus问题的函数。用整数序列1,2,3…,n表示顺序围坐在圆桌周围的人,并采用数组表示作为求解过程中使用的数据结构。Josephus问题描述,设n个人围坐在一个圆桌周围,现在从第s个人开始报数,数到第m个人,让他出局;然后从出局的下一个人重新开始报数,数到第m个人,再让他出局,…如此反复直到所有的人全部出局为止。[C函数]void Josephus(int A[],int n,s,m)(int i,j,k,temp;if(m==O){printf("m=0是无效的参数!\n");return;}for(i=0;i<n;i++) A[i]=i+1; /*初始化,执行n次*/i= (1) /*报名起始位置*/for(k=n;k>1;k-){if((2)) i=0;i=(3) /*寻找出局位置*/if(i!=k-1){tmp=A[i];for(j=i;J<k-1;j++) (4);(5);}}for(k=0;k<n/2;k++){tmp=A[k];A[k]=A[n-k+1];A[n-k+1]=tmp;}}

已知N个数已存入数组A[1..M]的前N个元素中(N<M),为在A[i](1≤i≤N)之前插入一个新数,应先______,以挪出一个空闲位置插入该数。A.从A[i]开始直到A[1],每个数向后移动一个位置B.从A[1]开始直到A[i],每个数向后移动一个位置C.从A[i]开始直到A[N],每个数向前移动一个位置D.从A[N]开始直到A[i],每个数向后移动一个位置

若已知一个栈的输入序列为1,2, 3,…,n;其输出序列为P1,P2,…,Pn。若P1=n,则Pi为( )。A.i B.n-iC.n-i+ 1 D.不确定

若己知一个栈的入栈序列是1, 2, 3,…、n,其输出序列是p l, p2, p3,…、pn,p1=n,p2=n-1则pi为( )。 A.i B.n-i C.n-i+1 D.不确定

已知N个数已存入数组A[1..M]的前N个元素中(N<M),为在A[i](1≤i≤N)之前插入—个新数,应先(40),以挪出一个空闲位置插入该数。A.从A[i]开始直到A[1],每个数向后移动一个位置B.从A[1]开始直到A[i],每个数向后移动一个位置C.从A[i]开始直到A[N],每个数向前移动一个位置D.从A[N]开始直到A[i],每个数向后移动一个位置

str为一个字符序列,序列由字符0和1组成。请补充函数 fun(),该函数的功能是:查找该字符序列中0字符连续出现的最长长度(即0字符的个数),如果有几个0字符串长度相同,只记录最后一个0字符串的相关信息。通过m和k返回最长0字符串的长度和最后0字符的下标。例如,如果输入“01001000”,结果为:0字符串最长长度为3,起始和结尾下标依次为5、7。注意:部分源程序给出如下.请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。试题程序:include<stdio.h>include<conio.h>define N 80void fun (【 】){int i, j=0;int bb[N];char *p=str;*m=0;*k=0;for(i=0;i<N;i++)bb[i]=0;i=0;while(*(p+i)){if(*(p+i)='0'){【 】i++;}else{j++;i++;}if (【 】){*m=bb[j];*k=i-1;}}}main(){char str[N];int m,n,k;clrscr();printf("***input the original string***\n");gets(str);printf("***The Original string ***\n");puts(str);fun(str,m,k);printf("\nThe length of '0' is :%d\n",m);printf("*** The suffix of character***\n");printf(" %d,%d",k-m+1,k);}

一个栈的输入序列为123…n,若输出序列的第一个元素是n,输出第i(1≤i≤n)个元素是______。A.不确定B.n-i+lC.iD.n-i

栈的输入序列为1,2,3,…,n-1,n,输出序列的第1个元素为n,则第i个输出元素为A.n-i+1B.n-1C.iD.哪个元素无所谓

阅读下列说明和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的元素值。

一个栈的输入序列为123…n,若输出的序列的第一个元素是n,输出的第i(1=i=n)个元素是【】A.不确定B.n-i+lC.iD.n-i

若一个栈的输入序列是1,2,3,…,n,输出序列的第一个元素是n,则第i个输出元素是( )。A.不确定B.n-iC.n-i-lD.n-i+l

阅读下列说明和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的元素值。

阅读以下说明和C代码,填补代码中的空缺,将解答填入答题纸的对应栏内。[说明]对一个整数序列进行快速排序的方法是:在待排序的整数序列中取第一个数作为基准值,然后根据基准值进行划分,从而将待排序列划分为不大于基准值者(称为左子序列)和大于基准值者(称为右子序列),然后再对左子序列和右子序列分别进行快速排序,最终得到非递减的有序序列。函数quicksort(int a[],int n)实现了快速排序,其中,n个整数构成的待排序列保存在数组元素a[0]~a[n-1]中。[C代码] #inclLade<stdi0.h> void quicksort(inta[], int n) { int i,j; int pivot=a[0]; //设置基准值 i=0; j=n-1; while (i<j){ while (i<1 //大于基准值者保持在原位置 if (i<j) { a[i] =a[j]; i++;} while(i<j //不大于基准值者保持在原位置 if (i<1) { a[j] =a[i]; 1--;} } a[i]=pivot; //基准元素归位 if (i>1 ) ______; //递归地对左孔序列进行快速排序 if (n-i-1>1 ) ______; //递归地对右孔序列进行快速排序 } int main() { int i, arr[]={23,56,9,75,18,42,11,67}; quicksort(______); //调用quicksort对数组arr[]进行排序 for( i=0; i<sizeof(arr)/sizeof(int); i++ ) printf("%d\t",arr[i]); return 0; }

设输入序列是1、2、3、……、n,经过栈的作用后输出序列的第一个元素是n,则输出序列中第i个输出元素是()A.n-1-iB.n-iC.n+1-iD.不能确定

阅读下列说明和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)}

给定一个由n个数组成的序列,要求该序列的最长单调上升子序列,请设计对应的算法并分析其时间复杂度,如果时间复杂度劣于O(nlogn)的,将其优化为O(nlogn)时间复杂度的算法。

若一个栈的输入序列是1,2,3,…,n,输出序列的第一个元素是n,则第i个输出元素是()。A、不确定B、n-iC、n-i-1D、n-i+1

设输入序列是1、2、3、……、n,经过栈的作用后输出序列的第一个元素是n,则输出序列中第i个输出元素是()。A、n-iB、n-1-iC、n+1-iD、不能确定

设输入序列1、2、3、…、n经过栈作用后,输出序列中的第一个元素是n,则输出序列中的第i个输出元素是()A、n-iB、n-1-iC、n+l-iD、不能确定

单选题一个栈的输入序列为123…n,若输出序列的第一个元素是n,输出第i(1=i=n)个元素是( )。A不确定Bn-i+lCiDn-i

单选题若一个栈的输入序列是1,2,3,…,n,输出序列的第一个元素是n,则第i个输出元素是()。A不确定Bn-iCn-i-1Dn-i+1

单选题若一个栈的输入序列是1,2,3……n,则输出序列的第一个元素是n,则第i个输出元素是()An-iBiCn-i+1Dn-i-1

判断题若一个栈的输入序列为123…n,其输出序列的第一个元素为n,则其输出序列的每个元素ai一定满足ai=n-i+1。(i=1,2..…n)。A对B错

单选题以下关于复利计算公式中系数的表述中,错误的是( )。A(1+i)n称为“等额序列支付现值系数”B[i(1+i)n/(1+i)n—1]称为“一次支付现值系数”C[i(1+i)n/(1+i)n—1]称为“一次支付终值系数”D[i/(1+i)n—1]称为“等额序列支付终值系数”