| ||||||||||
| 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 | |||||||||
why tle????????????#include <stdio.h>
#include <math.h>
#include <string.h>
#include <limits.h>
char s1[50010],s2[50010];
int n1,n2;
int t[50003],b[50003];
int d[4][4]={{0,5,5,5},{5,0,4,5},{5,4,0,5},{5,5,5,0}};
int main()
{
int i,j,check;
while(scanf("%s",s1)!=EOF)
{
if(scanf("%s",s2)==EOF)
break;
n1=(int)strlen(s1);
n2=(int)strlen(s2);
for(i=0;i<n1;i++)
{
switch(s1[i])
{
case 'A':
s1[i]=0;
break;
case 'G':
s1[i]=1;
break;
case 'C':
s1[i]=2;
break;
case 'T':
s1[i]=3;
break;
}
}
for(i=0;i<n2;i++)
{
switch(s2[i])
{
case 'A':
s2[i]=0;
break;
case 'G':
s2[i]=1;
break;
case 'C':
s2[i]=2;
break;
case 'T':
s2[i]=3;
break;
}
}
check=10;
i=0;
j=i-n1/check;
if(j<0)
j=0;
for(;j<=i+n1/check && j<=n2;j++)
{
b[j]=100000000;
}
b[0]=0;
for(i=0;i<=n1;i++)
{
j=i-n1/check;
if(j<0)
j=0;
for(;j<=i+n1/check && j<=n2;j++)
{
t[j]=b[j];
}
j=i+1-n1/check;
if(j<0)
j=0;
for(;j<=i+1+n1/check && j<=n2;j++)
{
b[j]=100000000;
}
j=i-n1/check;
if(j<0)
j=0;
for(;j<=i+n1/check && j<=n2;j++)
{
if(i<n1 && j<n2 && b[j+1]>d[s1[i]][s2[j]]+t[j])
b[j+1]=d[s1[i]][s2[j]]+t[j];
if(b[j]>3+t[j])
b[j]=3+t[j];
if(t[j+1]>3+t[j])
t[j+1]=3+t[j];
}
}
printf("%d\n",t[n2]);
}
return 0;
}
this is my code.
please help me
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator