不是VIP会员,不能显示答案

题目解答

题目:
#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;

}




判断题

1) f 函数的返回值小于等于 min(n,m)。( )

2) f 函数的返回值等于两个输入字符串的最长公共子串的长度。( )

3) 当输入两个完全相同的字符串时,g 函数的返回值总是 true.( )




选择题

4) 将第 19 行中的“v[m][n]” 替换为 “v[n][m]”,那么该程序( )。

5) 当输入为“csp-j p-jcs”时,输出为( )。

6) 当输入为“csppsc spsccp”时,输出为( )。
考点:
分析:
解答:
评论:
老师: