#CS40802. 阅读程序8-动态规划2
阅读程序8-动态规划2
阅读程序
注意:切勿用电脑直接运行代码得出答案,请用大脑+笔+纸运行代码答题,否则是在浪费你的时间。
第8节:动态规划
第2题【NOIP】2016
#include <iostream>
using namespace std;
int lps(string seq, int i, int j) {
int len1, len2;
if (i == j)
return 1;
7 if (i > j)
8 return 0;
if (seq[i] == seq[j])
return lps(seq, i + 1, j - 1) + 2;
len1 = lps(seq, i, j - 1);
len2 = lps(seq, i + 1, j);
if (len1 > len2)
return len1;
return len2;
}
int main() {
string seq = "acmerandacm";
int n = seq.size();
cout << lps(seq, 0, n - 1) << endl;
return 0;
}
●判断题
(1)n代表seq的长度。
{{ select(2-1) }}
- 正确
- 错误
(2)输 入acmerandacm,输出5
{{ select(2-2) }}
- 正确
- 错误
(3)第7~8行代码删去后程序仍能正常运行。
{{ select(2-3) }}
- 正确
- 错误
(4)程序最好情况下的时间复杂度为O()。
{{ select(2-4) }}
- 正确
- 错误
●选择题
(5)程序的最坏时间复杂度为( )
{{ select(2-5) }}
- O(nlogn)
- O()
- O(n)
- O()
(6)函数lps(seq,i,j)用途是( )。
{{ select(2-6) }}
- 求字符串seq的最长回文子序列长度。
- 求字符串seq中区间[i,j]上的最长回文子串长度。
- 求字符串seq中区间[i,j]上的最长回文子序列长度。
- 求字符串seq中区间[i,j]上的最长相同前缀后缀长度。