#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int s[5][5] = {
5, -1, -2, -1, -3,
-1, 5, -3, -2, -4,
-2, -3, 5, -2, -2,
-1, -2, -2, 5, -1,
-3, -4, -2, -1, 0
};
int id[1300];
int f[5072][5072], m, n;
char a[5072], b[5072];
int main() {
id['A'] = 0;
id['C'] = 1;
id['G'] = 2;
id['T'] = 3;
id['-'] = 4;
cin >> m >> a + 1 >> n >> b + 1;
memset(f, -0x3f, sizeof(f));
f[0][0] = 0;
for (int i = 1; i <= n; i++) {
f[i][0] = f[i - 1][0] + s[id[a[i]]][id['-']];
}
for (int i = 1; i <= m; i++) {
f[0][i] = f[0][i - 1] + s[id['-']][id[b[i]]];
}
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= n; j++) {
f[i][j] = f[i - 1][j - 1] + s[id[a[i]]][id[b[j]]];
int ops = max(f[i - 1][j] + s[id[a[i]]][id['-']], f[i][j - 1] + s[id['-']][id[b[j]]]);
f[i][j] = max(f[i - 1][j - 1] + s[id[a[i]]][id[b[j]]], ops);
}
}
cout << f[m][n];
return 0;
}
P1140相似基因
最新推荐文章于 2024-10-17 21:05:59 发布