hdu Human Gene Functions

来源:互联网 发布:查找python安装目录 编辑:程序博客网 时间:2024/05/16 17:42

贴个算是自己写的,比以前理解一些了

代码:

#include <stdio.h>#include <stdlib.h>#include <math.h>#include <string.h>#include <iostream>#include <algorithm>#include <map>#include <set>#include <queue>using namespace std;int cal[305][305];char arr[105];char brr[105];int dp[105][105];int max(int a,int b,int c){    int d=a>b?a:b;    return d>c?d:c;}int main(){cal['A']['A']=5;cal['C']['C']=5;cal['G']['G']=5;cal['T']['T']=5;cal['A']['C']=cal['C']['A']=-1;cal['A']['G']=cal['G']['A']=-2;cal['A']['T']=cal['T']['A']=-1;cal['A']['-']=cal['-']['A']=-3;cal['C']['G']=cal['G']['C']=-3;cal['C']['-']=cal['-']['C']=-4;cal['C']['T']=cal['T']['C']=-2;cal['G']['T']=cal['T']['G']=-2;cal['G']['-']=cal['-']['G']=-2;cal['T']['-']=cal['-']['T']=-1;    int lena,lenb;    int T;    scanf("%d",&T);    while(T--)    {        scanf("%d%s%d%s",&lena,arr+1,&lenb,brr+1);        memset(dp,0,sizeof(dp));        for(int i=1;i<=lena;i++)        dp[i][0]=cal[arr[i]]['-']+dp[i-1][0];        for(int i=1;i<=lenb;i++)        dp[0][i]=cal[brr[i]]['-']+dp[0][i-1];        for(int i=1;i<=lena;i++)        for(int j=1;j<=lenb;j++)        {            dp[i][j]=max(dp[i-1][j-1]+cal[arr[i]][brr[j]],dp[i-1][j]+cal[arr[i]]['-'],dp[i][j-1]+cal['-'][brr[j]]);            //printf("%c %c %d %d %d\n",arr[i],brr[j],i,j,dp[i][j]);        }        printf("%d\n",dp[lena][lenb]);    }}


原创粉丝点击