填空题
[说明]
试从含有n个int 型数的数组中删去若干个成分,使剩下的全部成分构成一个不减的子序列。设计算法和编写程序求出数组的不减子序列的长。
[C++ 程序]
#include<stdio.h>
#define N 100
int 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;
{{U}} (1) {{/U}}
{{U}} (2) {{/U}}
for (i=1;i<n; i++ )
{
for ( j=k;{{U}} (3) {{/U}}; j--);
{{U}} (4) {{/U}}; /*长为 j+1 的子序列的终元素存储在 a[j+1]*/
if ({{U}} (5) {{/U}} k++; /*最长不减子序列长 k 增1*/
}
printf ( "K = %d/n ",k );
}
【正确答案】
1、(1)a[1] =b[0] (2) k=1
【答案解析】(3) j>1&&a[j]>b[i] (4)a[j+1]=b[i]
(5) j==k