2 条题解
-
0
#include <bits/stdc++.h> using namespace std; char s1[110], s2[110]; int f[510][510]; int a[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} }; int ys[150]; int main() { int n1, n2, K; scanf("%d%s", &n1, s1 + 1); scanf("%d%s", &n2, s2 + 1); ys['A'] = 0; ys['C'] = 1; ys['G'] = 2; ys['T'] = 3; ys['-'] = 4; f[0][0] = 0; for(int i = 1; i <= n1; i++) f[i][0] = f[i-1][0] + a[ys[s1[i]]][4]; for(int j = 1; j <= n2; j++) f[0][j] = f[0][j-1] + a[4][ys[s2[j]]]; for(int i = 1; i <= n1; i++) for(int j = 1; j <= n2; j++) { f[i][j] = max(f[i][j-1] + a[4][ys[s2[j]]], f[i-1][j] + a[ys[s1[i]]][4]); f[i][j] = max(f[i][j], f[i-1][j-1] + a[ys[s1[i]]][ys[s2[j]]]); } printf("%d\n", f[n1][n2]); return 0; } -
0
#include<bits/stdc++.h> using namespace std; char s1[110],s2[110]; int f[510][510]; int a[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} } ; int ys[150]; int main() { int n1,n2,K; scanf("%d%s",&n1,s1+1); scanf("%d%s",&n2,s2+1); ys['A']=0;ys['C']=1;ys['G']=2;ys['T']=3;ys['-']=4; f[0][0]=0; for(int i=1;i<=n1;i++)f[i][0]=f[i-1][0]+a[ys[s1[i]]][4]; for(int j=1;j<=n2;j++)f[0][j]=f[0][j-1]+a[4][ys[s2[j]]]; for(int i=1; i<=n1;i++) for(int j=1;j<=n2;j++) { f[i][j]=max(f[i][j-1]+a[4][ys[s2[j]]],f[i-1][j]+a[ys[s1[i]]][4]); f[i][j]=max(f[i][j],f[i-1][j-1]+a[ys[s1[i]]][ys[s2[j]]]); } printf("%d\n",f[n1][n2]); return 0; }
- 1
信息
- ID
- 155
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 2
- 标签
- 递交数
- 69
- 已通过
- 44
- 上传者