调错:(
2025-03-16 14:37:51
发布于:上海
4阅读
0回复
0点赞
#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];
}
这里空空如也






有帮助,赞一个