01 #include <iostream> 02 using namespace std; 03 int main() { 04 const int SIZE = 100; 05 int height[SIZE], num[SIZE], n, ans; 06 cin >> n; 07 for (int i = 0; i < n; i++) { 08 cin >> height[i]; 09 num[i] = 1; 10 for (int j = 0; j < i; j++) { 11 if ((height[j] < height[i]) && (num[j] >= num[i])) 12 num[i] = num[j] + 1; 13 } 14 } 15 ans = 0; 16 for (int i = 0; i < n; i++) { 17 if (num[i] > ans) ans = num[i]; 18 } 19 cout << ans << endl; 20 return 0; 21 }
1. 最大可以为 99 才能保证程序不会出错误。( )
2. 程序功能:输入长度为 n 的整数序列,求最长上升子序列的长度。( )
3. 若将第 10 行的 j < i 改为 j <= i ,程序运行时会发生错误。( )
4. 本程序的时间复杂度为 $O(n^2)$
5. 若输入 6 2 5 3 11 12 4 则输出为( )
6. 若输入 5 2 3 4 5 6 则第 12 行 num[i] = num[j] + 1; 执行( )次