求条!!!
  • 板块P1140 相似基因
  • 楼主gzwjj
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/12/15 15:09
  • 上次更新2024/12/15 18:11:38
查看原帖
求条!!!
704414
gzwjj楼主2024/12/15 15:09
#include <bits/stdc++.h>
using namespace std;

const int N = 5000 + 10;
int id[N];
int f[N][N];
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 main() 
{
	int n, m;
	string a, b;
	cin >> n >> a;
	cin >> m >> b;
	a = " " + a;
	b = " " + b;
	id['A'] = 0, id['C'] = 1, id['G'] = 2, id['T'] = 3, id['-'] = 4; 
	memset(f, 0x3f, sizeof(f));
	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[i-1][0] + s[id['-']][id[b[i]]];
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= m; j++)
		{
			f[i][j] = max(f[i][j], f[i-1][j-1] + s[id[a[i]]][id[b[j]]]);
			f[i][j] = max(f[i][j], f[i-1][j] + s[id[a[i]]][id['-']]);
			f[i][j] = max(f[i][j], f[i][j-1] + s[id['-']][id[b[j]]]);
		}
	}
	cout << f[n][m] << endl;
    return 0;
}
2024/12/15 15:09
加载中...