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 |
请教高手,我自己运行完全正确,可在这老是RuntimeError,WHY?#include<stdio.h> #include<string.h> #include<stdlib.h> typedef struct DNAxu { char str[120]; int num; }DNAxu; void Msort(DNAxu SR[],DNAxu TR1[],int s,int t); int main() { DNAxu DNA[60]; int len,row; int i,j; int a[4]={0},count; scanf("%d%d",&len,&row); for(j=0;j<row;j++) scanf("%s",DNA[j].str); for(i=0;i<row;i++) { memset(a,0,sizeof(a)); count=0; for(j=len-1;j>=0;j--) { switch( DNA[i].str[j] ){ case 'A': a[1]++; a[2]++; a[3]++; break; case 'C': a[2]++; a[3]++; count += a[1]; break; case 'G': a[3]++; count += a[2]; break; case 'T': count += a[3]; } } DNA[i].num=count; } Msort(DNA,DNA,0,row-1); for(i=0;i<row;i++) printf("%s\n",DNA[i].str); system("pause"); return 0; } void Merge(DNAxu SR[],DNAxu TR[],int i,int m,int n) { int j,k,a,b; for(j=m+1,k=i;i<=m && j<=n;++k) { if(SR[i].num <= SR[j].num) TR[k]=SR[i++]; else TR[k]=SR[j++]; } if(i<=m) { for(a=k,b=i;a<=n&&b<=m;a++,b++) TR[a]=SR[b]; } if(j<=n) { for(a=k,b=j;a<=n&&b<=n;a++,b++) TR[a]=SR[b]; } } void Msort(DNAxu SR[],DNAxu TR1[],int s,int t) { int m; if(s==t) TR1[s]=SR[s]; else { DNAxu TR2[51]; m=(s+t)/2; Msort(SR,TR2,s,m); Msort(SR,TR2,m+1,t); Merge(TR2,TR1,s,m,t); } } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator