社区讨论

求助,玄关!

P1140[ICPC 2001 Taejon R] 相似基因参与者 2已保存回复 5

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
5 条
当前快照
1 份
快照标识符
@m24wqbns
此快照首次捕获于
2024/10/11 23:53
去年
此快照最后确认于
2025/11/04 17:24
4 个月前
查看原帖
代码对的,但会异常退出。
CPP
#include<bits/stdc++.h>
using namespace std;
int n,m;
string s,t;
int k[110],l[110];
int a[8][8];
int dp[110][110];//a串第i个与b串第j个的相似度
void init()
{
	a[1][1]=5;a[1][2]=-1;a[1][3]=-2;a[1][4]=-1;a[1][5]=-3;
	a[2][1]=-1;a[2][2]=5;a[2][3]=-3;a[2][4]=-2;a[2][5]=-4;
	a[3][1]=-2;a[3][2]=-3;a[3][3]=5;a[3][4]=-2;a[3][5]=-2;
	a[4][1]=-1;a[4][2]=-2;a[4][3]=-2;a[4][4]=5;a[4][5]=-1;
	a[5][1]=-3;a[5][2]=-4;a[5][3]=-2;a[5][4]=-1;a[5][5]=0;
	dp[0][0]=0;
	for(int i=1;i<=n;i++)
	{
		dp[i][0]=dp[i-1][0]+a[k[i]][5];
	}
	for(int i=1;i<=m;i++)
	{
		dp[0][i]=dp[0][i-1]+a[5][l[i]];
	}
	return;
}
int re(char c)
{
	if(c=='A')return 1;
	else if(c=='C')return 2;
	else if(c=='G')return 3;
	else if(c=='T')return 4;
	else return 5;
}
signed main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>s[i];
		k[i]=re(s[i]);
	}
	cin>>m;
	for(int i=1;i<=m;i++)
	{
		cin>>t[i];
		l[i]=re(t[i]);
	}
	init();
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			dp[i][j]=max(dp[i-1][j-1]+a[k[i]][l[j]],max(dp[i-1][j]+a[k[i]][5],dp[i][j-1]+a[5][l[j]]));
		}
	}
	cout<<dp[n][m]<<endl;
	return 0;
}

回复

5 条回复,欢迎继续交流。

正在加载回复...