poj1080

原创 2013年12月01日 19:54:29
#include <iostream>

using namespace std;

const int MAXN = 101;
int dp[MAXN][MAXN];
int score[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 change(char ch)
{
    if (ch == 'A')
    {
        return 0;
    }
    else if (ch == 'C')
    {
        return 1;
    }
    else if (ch == 'G')
    {
        return 2;
    }
    else if (ch == 'T')
    {
        return 3;
    }
    else
    {
        return 4;
    }
}

char A[MAXN], B[MAXN];

int maxs(int a, int b, int c)
{
    return max(a, max(b, c));
}

void input()
{
    int t, a, b;

    cin >> t;

    while (t--)
    {
        cin >> a;

        for (int i = 0; i < a; i++)
        {
            cin >> A[i];
        }

        cin >> b;

        for (int i = 0; i < b; i++)
        {
            cin >> B[i];
        }

        dp[0][0] = 0;

        for (int i = 1; i <= a; i++)
        {
            dp[i][0] = dp[i - 1][0] + score[change(A[i - 1])][change('-')];
        }

        for (int i = 1; i <= b; i++)
        {
            dp[0][i] = dp[0][i - 1] + score[change('-')][change(B[i - 1])];
        }

        for (int i = 1; i <= a; i++)
        {
            for (int j = 1; j <= b; j++)
            {
                dp[i][j] = maxs(dp[i][j - 1] + score[change('-')][change(B[j - 1])],
                                dp[i - 1][j] + score[change(A[i - 1])][change('-')],
                                dp[i - 1][j - 1] + score[change(A[i - 1])][change(B[j - 1])]);

            }
        }

        cout << dp[a][b] << endl;
    }
}

int main()
{
    input();
    return 0;
}

poj1080(LCS变形)

链接:点击打开链接 题意:给定两组序列,要你求出它们的最大相似度,每个字母与其他字母或自身和空格对应都有一个打分,求在这两个字符串中插入空格,让这两个字符串的匹配分数最大 代码: #include ...
  • stay_accept
  • stay_accept
  • 2016年05月26日 18:35
  • 491

poj 1080 Human Gene Functions 解题报告(附详细分析)

动态规划题,是最长上升子序列的变形
  • u012411003
  • u012411003
  • 2013年11月27日 22:19
  • 711

poj1080(LCS变形)

题目链接:poj1080 /*poj 1080 题意:给出两个基因字符串a,b,每一种匹配都有一个值,可以在串中添加‘-’,改变 匹配的顺序,最后求全部匹配的最大值 思路:先将字符串转化,每个字符...
  • u010728156
  • u010728156
  • 2014年04月29日 11:01
  • 539

每日一题(17): poj1080

1. 原来没有思路。因为LCS有点不熟。但是参考了网上的解法,有了思路,就自己写出来了。主要参考:点击打开链接 2. 其实就是把之前的动态规划公式延伸了一维。因为之前虽然背包问题也可以是二维,但...
  • kaka0930
  • kaka0930
  • 2016年12月01日 20:05
  • 95

poj1080(LCS类的转移方程)

/* translation: 题目大意是给出两个基因序列,要你求出这两个基因序列的相似度。所谓的相似度, 就是将基因串用‘-’填充使得两串长度相同后,将对应位置上的字母一一对应,再 根据题目给...
  • qq_29169749
  • qq_29169749
  • 2016年08月20日 14:49
  • 66

【动态规划DP,二维动归】poj1080,Human Gene Functions

http://poj.org/problem?id=1080 注意,三种情况: 1)ai和bi匹配(不管a[i]和b[j]是否一样,因为不匹配也可以,只是代价为负而已!!!看代码注释掉的部分就知道...
  • mmc2015
  • mmc2015
  • 2015年01月07日 13:41
  • 609

Json数据手动解析

本文为博主原创文章,未经博主允许不得转载。很早以前就想写博客,一是怕误导大家,二是怕贻笑大方。现在感觉自己可以拿出部分经验与大家分享了今天分享的是Json数据手动解析,在开发过程中,难免会遇到手动解析...
  • andoop
  • andoop
  • 2016年01月24日 10:54
  • 3487

XML解析——Java中XML的四种解析方式

XML是一种通用的数据交换格式,它的平台无关性、语言无关性、系统无关性、给数据集成与交互带来了极大的方便。XML在不同的语言环境中解析方式都是一样的,只不过实现的语法不同而已。   XML的解析方式...
  • RickyIT
  • RickyIT
  • 2016年12月22日 13:53
  • 8504

解析xml的4种方法详解

1. 介绍 1)DOM(JAXP Crimson解析器)          DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构...
  • jzhf2012
  • jzhf2012
  • 2013年01月23日 10:25
  • 73334

超详细JSON解析步骤

JSON简介 JAVAScript Object Notation是一种轻量级的数据交换格式具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得...
  • miaozhenzhong
  • miaozhenzhong
  • 2016年09月19日 14:58
  • 20799
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:poj1080
举报原因:
原因补充:

(最多只允许输入30个字)