第 22 题
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int f(string x, string y) {
int m = x.size();
int n = y.size();
vector<vector<int>> v(m+1,vector<int>(n+1,0));
for(int i = 1; i <= m; i++) {
for(int j = 1; j <= n; j++) {
if(x[i-1] == y[j-1]) {
v[i][j] = v[i-1][j-1] + 1;
} else {
v[i][j] = max(v[i-1][j], v[i][j-1]);
}
}
}
return v[m][n];
}
bool g(string x, string y) {
if(x.size() != y.size()) {
return false;
}
return f(x + x, y) == y.size();
}
int main() {
string x, y;
cin >> x >> y;
cout << g(x, y) << endl;
return 0;
}
判断题
第 22 题 f 函数的返回值小于等于 min(n,m)。( )
第 23 题 f 函数的返回值等于两个输入字符串的最长公共子串的长度。( )
第 24 题 当输入两个完全相同的字符串时,g 函数的返回值总是 true.( )
第 25 题 将第 19 行中的“v[m][n]” 替换为 “v[n][m]”,那么该程序( )。
第 26 题 当输入为“csp-j p-jcs”时,输出为( )。
第 27 题 当输入为“csppsc spsccp”时,输出为( )。