小墨在努力!!
吗了个b的。。。。。
Source Code

Problem: 1080 User: XXX
Memory: 204K Time: 0MS
Language: C++ Result: Accepted

Source Code
#include <stdio.h>
#include <string.h>
int max(int a ,int b ,int c)
{
if(a >= b && a >= c) return a;
else if(b >= a && b >= c) return b;
else return c;
}
int main()
{
int n ,i ,j ,len1 ,len2 ,dp[105][105] ,table[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};
char str1[105] ,str2[105] ,m[200];
m['A'] = 1 ,m['C'] = 2 ,m['G'] = 3 ,m['T'] = 4;
scanf("%d",&n);
while(n--)
{
dp[0][0] = 0;
scanf("%d %s" ,&len1 ,&str1);
scanf("%d %s" ,&len2 ,&str2);
for(i = 1 ;i <= len1 ;i++)
dp[i][0] = dp[i - 1][0] + table[m[str1[i - 1]]][5];
for(i = 1 ;i <= len2 ;i++)
dp[0][i] = dp[0][i - 1] + table[5][m[str2[i - 1]]];
for(i = 1 ;i <= len1 ;i++)
for(j = 1 ;j <= len2 ;j++)
dp[i][j] = max(dp[i - 1][j - 1] + table[m[str1[i - 1]]][m[str2[j - 1]]] ,dp[i][j - 1] + table[5][m[str2[j - 1]]] ,dp[i - 1][j] + table[m[str1[i - 1]]][5]);
printf("%d\n",dp[len1][len2]);
}
return 0;
}

感觉写的还是有些问题。。。。

posted on 2012-02-16 23:11  小墨在努力!!  阅读(134)  评论(0编辑  收藏  举报