50pts求调QAQ
  • 板块P1140 相似基因
  • 楼主Andyxz
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/6/20 17:30
  • 上次更新2025/6/21 14:03:04
查看原帖
50pts求调QAQ
1067741
Andyxz楼主2025/6/20 17:30
#include<bits/stdc++.h>
using namespace std;
int dp[105][105];int mip[6][6]={{0,0,0,0,0,0},{0,5,-1,-2,-1,-3},{0,-1,5,-3,-2,-4},{0,-2,-3,5,-2,-2},{0,-1,-2,-2,5,-1},{0,-3,-4,-2,-1,0}};
int n,m;string a,b;
int k(char c){
	if(c=='A') return 1;
	if(c=='C') return 2;
	if(c=='G') return 3;
	else return 4;
}
int main(){
	cin>>n;
	cin>>a;
	cin>>m;
	cin>>b;
  memset(dp,0,sizeof(dp))
	for(int i=0;i<m;i++){
		dp[i+1][0]=mip[5][k(b[i])];
	}
	for(int i=0;i<n;i++){
		dp[0][i+1]=mip[5][k(a[i])];
	}
	
	dp[0][0]=0;
	for(int i=1;i<=m;i++){
		for(int j=1;j<=n;j++){
			dp[i][j]=max(dp[i-1][j-1]+mip[k(b[i-1])][k(a[j-1])],max(dp[i-1][j]+mip[5][k(b[i-1])],dp[i][j-1]+mip[5][k(a[j-1])]));
		}
	}
	cout<<dp[m][n];
}

后面b串是i,a串是j(可能看着有些别扭)

2025/6/20 17:30
加载中...