hdu 1080 Human Gene Functions
程序员文章站
2022-07-12 08:58:50
...
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1080
又因为没关同步混用scanf 和 cout 一直找bug
啊啊啊啊啊啊啊啊w(゚Д゚)w
三种状态吧
i j 配对
i 和 ‘-’配对
j 和 ‘-’ 配对
#include<bits/stdc++.h>
using namespace std;
#define ll long long int
const int INF = 0x3f3f3f3f;
const int mod = 998244353;
int d[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}};
char str1[105],str2[105];
int dp[105][105];
int main()
{
// std::ios::sync_with_stdio(false);
int t,n,m,i,j;
cin>>t;
map<char,int>index;
index['A']=0;
index['C']=1;
index['G']=2;
index['T']=3;
while(t--)
{
scanf("%d %s",&n,str1+1);
scanf("%d %s",&m,str2+1);
memset(dp,-INF,sizeof(dp));
dp[0][0]=0;
for(i=1;i<=m;i++)
dp[0][i]=dp[0][i-1]+d[4][index[str2[i]]];
for(i=1;i<=n;i++)
dp[i][0]=dp[i-1][0]+d[index[str1[i]]][4];
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
int ss,tt;
ss=index[str1[i]];
tt=index[str2[j]];
dp[i][j]=max(dp[i-1][j-1]+d[ss][tt],max(dp[i-1][j]+d[ss][4],dp[i][j-1]+d[4][tt]));
}
}
cout<<dp[n][m]<<endl;
}
return 0;
}
推荐阅读
-
hdu 1080 Human Gene Functions 很霸气的DP
-
【poj1080】 Human Gene Functions
-
【POJ 1080】 Human Gene Functions
-
poj1080 Human Gene Functions
-
POJ 1080 Human Gene Functions
-
【POJ1080】Human Gene Functions(动态规划)
-
poj 1080 Human Gene Functions
-
POJ 1080 Human Gene Functions
-
poj1080 Human Gene Functions (lcs变形)
-
hdu 1080 Human Gene Functions