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