用c++实现Description 现定义两个仅由大写字母组成的字符串的匹配程度如下:将某一字符串的首字符与另一字符串的某一字符对齐,然后后面的字符也一一对齐,直至某一字符串的串尾为止。对于每一组对齐的两个字符,若这两个字符相等,则计数。匹配程度为每种对齐方法的计数的最大值。最后计算这个匹配程度的 2 倍,与两串总长度的最大比值。
时间: 2024-02-11 22:09:45 浏览: 48
好的,下面是C++的实现代码:
```
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main() {
string s1, s2;
cin >> s1 >> s2;
int n = s1.size(), m = s2.size();
int ans = 0;
for (int i = 0; i < n; i++) {
int cnt = 0;
for (int j = 0; j < min(n - i, m); j++) {
if (s1[i + j] == s2[j]) {
cnt++;
}
}
ans = max(ans, cnt);
}
for (int i = 0; i < m; i++) {
int cnt = 0;
for (int j = 0; j < min(m - i, n); j++) {
if (s2[i + j] == s1[j]) {
cnt++;
}
}
ans = max(ans, cnt);
}
int len = n + m;
double res = 2.0 * ans / len;
printf("%.2lf\n", res);
return 0;
}
```
代码思路:
首先读入两个字符串 s1 和 s2,然后枚举两个字符串的对齐方式,计算匹配程度。具体来说,对于 s1,我们从第一个字符开始,依次与 s2 的每个字符对齐,计算匹配程度 cnt,然后将 cnt 与当前最大值 ans 取最大。对于 s2,也是同样的操作。最后,我们将 ans 乘以 2.0 再除以两个字符串的长度之和 len,即可得到最终的匹配程度。
阅读全文