| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:大家帮忙看看,第三维是不是有办法可以省掉?这个是记录当前状态第一个串和第二个串的长度差的In Reply To:囧啊,第一次提交MLE,习惯把数组开大的结果。。数组放小后AC,不过memory还是很恐怖,8M。。。附代码 Posted by:yzhw9981 at 2009-04-26 16:20:53 > # include <stdio.h>
> # define INVALID -999999
> int len1,len2;
> char c1[101],c2[101];
> int dp[101][101][201];
> int dic[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,INVALID};
> void change(char *a)
> {
> switch(*a)
> {
> case 'A':
> *a=1;
> break;
> case 'C':
> *a=2;
> break;
> case 'G':
> *a=3;
> break;
> case 'T':
> *a=4;
> break;
> };
> }
> int max(int a,int b,int c)
> {
> int res=-99999999;
> if(a>res) res=a;
> if(b>res) res=b;
> if(c>res) res=c;
> return res;
> }
>
> int main()
> {
> int testcase,testcase_count;
> scanf("%d",&testcase);
> for(testcase_count=1;testcase_count<=testcase;testcase_count++)
> {
> scanf("%d ",&len1);
> int i,j,k;
> for(i=1;i<=len1;i++)
> {
> scanf("%c",c1+i);
> change(c1+i);
> }
> scanf("%d ",&len2);
> for(i=1;i<=len2;i++)
> {
> scanf("%c",c2+i);
> change(c2+i);
> }
> /*-------------dp------------------------*/
> for(i=0;i<=len1;i++)
> for(j=0;j<=len2;j++)
> for(k=100-len2-1;k<=len1+100+1;k++)
> dp[i][j][k]=INVALID;
> dp[0][0][100]=0;
> for(i=1;i<=len1;i++)
> {
> int sum=0;
> for(j=1;j<=i;j++) sum+=dic[c1[j]][5];
> dp[i][0][100+i]=sum;
> }
> for(i=1;i<=len2;i++)
> {
> int sum=0;
> for(j=1;j<=i;j++) sum+=dic[c2[j]][5];
> dp[0][i][100-i]=sum;
> }
> for(i=1;i<=len1;i++)
> for(j=1;j<=len2;j++)
> for(k=100-len2;k<=100+len1;k++)
> {
> dp[i][j][k]=max(dp[i-1][j-1][k]+dic[c1[i]][c2[j]],
> dp[i][j-1][k+1]+dic[5][c2[j]],
> dp[i-1][j][k-1]+dic[c1[i]][5]
> );
>
> }
> /*------------------------end of dp------------------------*/
> printf("%d\n",dp[len1][len2][100+len1-len2]);
> }
> return 0;
> }
>
>
>
>
>
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator