社区讨论
求助,玄关!
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 条回复,欢迎继续交流。
正在加载回复...