调错:(
原题链接:21617.相似基因2025-03-16 14:37:51
发布于:上海
#include <bits/stdc++.h>
using namespace std;
int dp[150][150];
int score[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,-114514}};
int t(char c){
int x=0;
switch (c){
case 'A': x=0;break;
case 'C': x=1;break;
case 'G': x=2;break;
case 'T': x=3;break;
case '-': x=4;break;
}
return x;
}
int s(char c,char d){
return score[t(c)][t(d)];
}
int n,m;
string s1,s2;
int main(){
cin >> n >> s1 >> m >> s2;
dp[0][0]=0;
for (int j=1; j<m; j++){
dp[0][j]=dp[0][j-1]+s('-',s2[j]);
}
for (int i=1; i<n; i++){
dp[i][0]=dp[i-1][0]+s(s1[i],'-');
}
for (int i=1; i<n; i++){
for (int j=1; j<m; j++){
int m1=dp[i-1][j-1]+s(s1[i],s2[j]);
int m2=dp[i][j-1]+s('-',s2[j]);
int m3=dp[i-1][j]+s(s1[i],'-');
dp[i][j]=max(m1,max(m2,m3));
}
}
for (int i=0; i<n; i++){
for (int j=0; j<m; j++){
cout << dp[i][j] << " ";
}
cout << endl;
}
cout << dp[n-1][m-1];
}
这里空空如也
有帮助,赞一个