Notice: Undefined index: name in /usr/www/lib/views/home/viewtitle.html on line 188
-阅读程序 第 18 题
#include<iostream>
using namespace std;
const int maxn=100000;
int a[maxn], b[maxn],n;
int Search(int num, int low, int high)
{
	int mid;
	while(low<=high)
	{
		mid=(low+ high)/2;
		if(num>=b[mid]) low=mid+1;
		else high=mid-1;
	}
	return low;
}
int main()
{
	int len, pos;
	cin>>n;
	for(int i=1; i<=n; i++)
		cin>>a[i];
	b[1]=a[1];
	len=1;
	for(int i=2; i<=n; i++)
	{
		if(a[i]>=b[len])
		{
			len++;
			b[len]=a[i];
		}
		else
		{
			pos=Search(a[i],1,len);
			b[pos]=a[i];
		}
	}
	cout<<len<<endl;
	return 0;
}
● 判断题
第 1 题 (1分)输入的a[i]必须在[1,n]范围内。( )
第 2 题 (1分)把第11行的“mid+1” 改成“mid”不影响程序运行结果。( )
第 3 题 当数组a单调不降时输出为1。( )
第 4 题 数组b内的元素始终单调不降。()
● 单选题
第 5 题 当输入第一行为20,第二行为 1 20 2 19 3 18 4 17...9 12 10 11时,输出为( )。
第 6 题 该算法的时间复杂度为( )。

解答部分以后会开放。