求条
  • 板块P1140 相似基因
  • 楼主convie
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/1/16 20:26
  • 上次更新2025/1/16 20:28:13
查看原帖
求条
1503208
convie楼主2025/1/16 20:26

@z_z_b_ 大佬快帮我看看呀Orz

#include<iostream>
#include<cstring>
#include<vector>
using namespace std;
#define MAXN 10010
int a[MAXN];
int b[MAXN];
int w[][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;
int dp[MAXN][MAXN];
int main(){
	char c;
	cin>>n;
	for(int i=1;i<=n;i++){
		scanf(" %c",&c);
		if(c=='A')a[i]=1;
		if(c=='C')a[i]=2;
		if(c=='G')a[i]=3;
		if(c=='T')a[i]=4;
	}
	cin>>m;
	for(int i=1;i<=m;i++){
		scanf(" %c",&c);
		if(c=='A')b[i]=1;
		if(c=='C')b[i]=2;
		if(c=='G')b[i]=3;
		if(c=='T')b[i]=4;
	}
	for(int i=1;i<=n;i++)dp[i][0]=dp[i-1][0]+w[a[i]][5];
	for(int i=1;i<=m;i++)dp[0][i]=dp[0][i-1]+w[5][b[i]];
	for(int i=1;i<=n;i++)
	for(int j=1;j<=m;j++){
		dp[i][j]=max(dp[i][j],dp[i-1][j-1]+w[a[i]][b[j]]);
		dp[i][j]=max(dp[i-1][j]+w[a[i]][5],dp[i][j]);
		dp[i][j]=max(dp[i][j-1]+w[5][b[j]],dp[i][j]);
}
	cout<<dp[n][m];
	return 0;
}

这么完美,想不出哪里错了

2025/1/16 20:26
加载中...