⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pku1080.cpp

📁 这是ACM 方面的资料 是PKU的 北京大学的出来的
💻 CPP
字号:
#include <stdio.h>
#include <string.h>
#define SIZE 110

char a[SIZE], b[SIZE];
int v[SIZE][SIZE];

const int P[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 cTon(char x)
{
	if (x == 'A')
		return 0;
	if (x == 'C')
		return 1;
	if (x == 'G')
		return 2;
	if (x == 'T')
		return 3;
	return 4;
}

int Max(int a, int b)
{
	return a > b ? a : b;
}

void Solve()
{
	int la, lb;
	int i, j;
	int x, y, z;
	scanf("%d %s", &la, a);
	scanf("%d %s", &lb, b);
	v[0][0] = 0;
	for (i = 1; i <= la; i++)
	{
		v[i][0] = v[i - 1][0] + P[cTon(a[i - 1])][4];
	}
	for (j = 1; j <= lb; j++)
	{
		v[0][j] = v[0][j - 1] + P[4][cTon(b[j - 1])];
	}
	for (i = 1; i <= la; i++)
	{
		for (j = 1; j <= lb; j++)
		{
			x = v[i - 1][j - 1] + P[cTon(a[i - 1])][cTon(b[j - 1])];
			y = v[i - 1][j] + P[cTon(a[i - 1])][4];
			z = v[i][j - 1] + P[4][cTon(b[j - 1])];
			v[i][j] = Max(x, Max(y, z));
		}
	}
	printf("%d\n", v[la][lb]);
}

int main()
{
	int T;
	scanf("%d", &T);
	while (T--)
		Solve();
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -