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

POJ 1080

时间:2015-06-09 15:23:41      阅读:101      评论:0      收藏:0      [点我收藏+]

标签:

#include <iostream>
#include <string>

#define MAXN 110

using namespace std;

int _m[MAXN][MAXN];

int max(int a,int b,int c);

int cmp(char a,char b);

int main()
{
    //freopen("acm.acm","r",stdin);
    int test;
    string s_1;
    string s_2;
    int k;
    int i;
    int j;

    cin>>test;
    while(test --)
    {
        cin>>k;
        cin>>s_1;
        cin>>k;
        cin>>s_2;
        _m[0][0] = 0;
//        _m[1][0] = 0;
//        _m[0][1] = 0;
        for(i = 0; i < s_2.length(); ++ i)
        {
            _m[0][i+1] = _m[0][i] + cmp( ,s_2[i]);
        }

        for(i = 0; i < s_1.length(); ++ i)
        {
            _m[i+1][0] = _m[i][0] + cmp(s_1[i], );
        }

    
        for(i = 0; i < s_1.length(); ++ i)
        {
            for(j = 0; j < s_2.length(); ++ j)
            {
                if(s_1[i] == s_2[j])
                {
                    _m[i+1][j+1] = 5 + _m[i][j];
                }
                else 
                {
                    _m[i+1][j+1] = max(cmp(s_1[i], ) + _m[i][j+1],cmp( ,s_2[j])+_m[i+1][j],cmp(s_1[i],s_2[j])+_m[i][j]);
                }
            }
        }
        cout<<_m[s_1.length()][s_2.length()]<<endl;
    }
}
int max(int a,int b);
int max(int a,int b,int c)
{
    if(a > max(b,c))
    {
        return a;
    }
    return max(b,c);
}

int max(int a,int b)
{
    if(a > b)
        return a;
    return b;
}

int cmp(char a,char b)
{
    if((a == A && b == C) ||( a == C && b == A))
    {
        return -1;
    }
    else if((a == A && b == T) || (a == T && b == A))
    {
        return -1;
    }
    else if((a == A && b == G) || (a == G && b == A))
    {
        return -2;
    }
    else if((a == C && b == G) || (a == G && b== C))
    {
        return -3;
    }
    else if((a == C && b == T) || (a == T && b == C))
    {
        return -2;
    }
    else if((a == G && b == T) || (a == T && b == G))
    {
        return -2;
    }
    else if( (a ==   && b == A) || (a == A && b ==  ))
    {
        return -3;
    }
    else if((a ==   && b == T) || (a == T && b ==  ))
    {
        return -1;
    }
    else if((a ==   && b == C) || (a == C && b ==  ) )
    {
        return -4;
    }
    else if( (a ==   && b == G) || (a == G && b ==  ) )
    {
        return -2;
    }
}

 

POJ 1080

标签:

原文地址:http://www.cnblogs.com/gavinsp/p/4563259.html

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