| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
完美dp#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
#include<map>
using namespace std;
map<char,int> B;
char s1[105],s2[105];
int m,n;
int tu[105][105];
int biao[6][6]={{5,-1,-2,-1,-3},{-1,5,-3,-2,-4},{-2,-3,5,-2,-2},{-1,-2,-2,5,-1},{-3,-4,-2,-1,-1000}};
void chuli()
{
B['A']=0;
B['C']=1;
B['G']=2;
B['T']=3;
B['-']=4;
memset(tu,0,sizeof(tu));
scanf("%d%s",&m,s1);
scanf("%d%s",&n,s2);
for(int i=1;i<=m;i++)
tu[i][0]=biao[B[s1[i-1]]][4]+tu[i-1][0];
for(int j=1;j<=n;j++)
tu[0][j]=biao[4][B[s2[j-1]]]+tu[0][j-1];
//daying(m,n);
for(int i=1;i<=m;i++)
{
for(int j=1;j<=n;j++)
{
int yi=tu[i-1][j-1]+biao[B[s1[i-1]]][B[s2[j-1]]];
int er=tu[i-1][j]+biao[B[s1[i-1]]][4];
int san=tu[i][j-1]+biao[4][B[s2[j-1]]];
tu[i][j]=max(max(yi,er),san);
}
}
printf("%d\n",tu[m][n]);
}
int main()
{
int a;
scanf("%d",&a);
while(a--)
{
chuli();
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator