码迷,mamicode.com
首页 > 其他好文 > 详细

poj 1080

时间:2014-12-10 22:56:32      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:dp

不要打我 ,存代码

#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;

#define maxx 105
int len1, len2, dp[maxx][maxx], s[200][200];
char g1[maxx], g2[maxx];
void init()
{
     s['A']['A'] = s['C']['C'] = s['G']['G'] = s['T']['T'] = 5;
     s['A']['C'] = s['C']['A'] = s['A']['T'] = s['T']['A'] = -1;
     s['A']['G'] = s['G']['A'] = s['C']['T'] = s['T']['C'] = -2;
     s['G']['T'] = s['T']['G'] = s['G']['-'] = s['-']['G'] = -2;
     s['A']['-'] = s['-']['A'] = s['C']['G'] = s['G']['C'] = -3;
     s['T']['-'] = s['-']['T'] = -1;
     s['C']['-'] = s['-']['C'] = -4;
}
int main()
{
    int n;
    init();
    scanf ("%d", &n);
    while (n--) {
    	memset(dp,0,sizeof(dp));
    scanf ("%d%s%d%s", &len1, g1+1, &len2, g2+1);
      int i, j;
    dp[0][0] = 0;
    for (i = 1; i <= len2; i++)
        dp[0][i] = dp[0][i-1] + s['-'][g2[i]];
    for (i = 1; i <= len1; i++)
        dp[i][0] = dp[i-1][0] + s[g1[i]]['-'];
    for (i = 1; i <= len1; i++) {
         for (j = 1; j <= len2; j++)
            dp[i][j] = max (dp[i-1][j-1] + s[g1[i]][g2[j]], max(dp[i][j-1] + s['-'][g2[j]], dp[i-1][j] + s[g1[i]]['-']));
    }
    printf("%d\n",dp[len1][len2]);
    }
    return 0;
}


poj 1080

标签:dp

原文地址:http://blog.csdn.net/u013076044/article/details/41852355

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!