求助!
  • 板块灌水区
  • 楼主zhouwenbo1234
  • 当前回复7
  • 已保存回复7
  • 发布时间2024/7/18 09:01
  • 上次更新2024/7/18 10:11:08
查看原帖
求助!
1331638
zhouwenbo1234楼主2024/7/18 09:01
#include <bits/stdc++.h>
using namespace std;

int n,m;
int a[105],b[105],dp[105][105];

int w[10][10]={
	{0,0,0,0,0,0},
	{0,5,-1,-2,-1,-3},
	{0,-1,5,-3,-2,-4},
	{0,-2,-3,5,-2,-2},
	{0,-1,-2,-2,5,-1},
	{0,-3,-4,-2,-1,0},
};

int main()
{
	cin >>n;
	for (int i=1;i<=n;i++)
	{
		int t;
		cin >>t;
		if (t=='A')
		{
			a[i]=1;
			break;
		}
		else if (t=='C')
		{
			a[i]=2;
			break;
		}
		else if (t=='G')
		{
			a[i]=3;
			break;
		}
		else if (t=='T')
		{
			a[i]=4;
			break;
		}
	}
	
	cin >>m;
	//cout <<"1"<<endl;
	for (int i=1;i<=m;i++)
	{
		
		int t;
		cin >>t;
		if (t=='A')
		{
			b[i]=1;
			break;
		}
		else if (t=='C')
		{
			b[i]=2;
			break;
		}
		else if (t=='G')
		{
			b[i]=3;
			break;
		}
		else if (t=='T')
		{
			b[i]=4;
			break;
		}
	}
	dp[0][0]=0;
	for (int i=1;i<=n;i++)
	{
		dp[i][0]=dp[i-1][0]+w[a[i]][5];
	}
	for (int i=1;i<=m;i++)
	{
		dp[0][i]=dp[0][i-1]+w[b[i]][5];
	}
	for (int i=1;i<=n;i++)
		for (int j=1;j<=m;j++)
		{
			dp[i][j]=max(dp[i-1][j-1]+w[a[i]][b[j]],max(dp[i-1][j]+w[a[i]][5],dp[i][j-1]+w[5][b[j]]));
		}
	cout <<dp[n][m]<<endl;
	return 0;
} 

为什么读不进去啊,萌新求助QuQ

2024/7/18 09:01
加载中...