下面程序使用动态规划求两个字符串的最长公共子序列(LCS)长度,横线处应填入的是( )。
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
int lcs_len(const string &a, const string &b) {
int n = (int)a.size(), m = (int)b.size();
vector<vector<int>> dp(n + 1, vector<int>(m + 1, 0));
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
if (a[i - 1] == b[j - 1])
dp[i][j] = dp[i - 1][j - 1] + 1;
else
________; // 在此处填入选项
return dp[n][m];
}根据上下文和C++语法规则确定空缺处应填的内容,关注函数调用参数、表达式和返回值类型。
填空时注意语法完整性:分号、括号匹配、函数参数类型和个数、返回值类型。
【考点】动态规划|最长公共子序列|状态转移方程
GESP 八级 DP 核心题型。命题人卡住的是"理解状态转移而非背模板"——七级以下考 DP 多给递推式,八级开始直接考察你能否独立写出状态转移方程,这是区分度的关键分水岭。