1368 - DNA Consensus String

来源:互联网 发布:淘宝发布网络推广类目 编辑:程序博客网 时间:2024/05/18 01:47

读题依然困难。。开始的时候中间写了一个函数

来返回字母不同个数,后来发现有一组数据死活不对。

自测不对代码:

#include<stdio.h>#include<string.h>int wuyu(int a,int c,int g,int t,int m){    int flag;    if(a==c&&c==g&&g==t){        printf("A");return 0;    }    else if(a>c&&a>g&&a>t){        printf("A");return m-a;    }    else if(c>a&&c>g&&c>t){        printf("C");return m-c;    }    else if(g>a&&g>c&&g>t){        printf("G");return m-g;    }    else if(t>a&&t>c&&t>g){        printf("T");return m-t;    }}int main(){    int t,m,n,i,j,flag,e;    char D;    int A[1100],C[1100],G[1100],T[1100];    scanf("%d",&t);    while(t--){        scanf("%d%d",&m,&n);getchar();        memset(A,0,sizeof(int)*1100);        memset(C,0,sizeof(int)*1100);        memset(G,0,sizeof(int)*1100);        memset(T,0,sizeof(int)*1100);        e=0;      for(i=1;i<=m;++i){        for(j=1;j<=n;++j){            scanf("%c",&D);            if(D=='A')                ++A[j];            else if(D=='C')                ++C[j];            else if(D=='G')                ++G[j];            else if(D=='T')                ++T[j];        }        getchar();      }      for(i=1;i<=n;++i)      e=e+wuyu(A[i],C[i],G[i],T[i],m);      printf("\n%d\n",e);    }    return 0;

  比如说m-a=3吧,子函数return m-a;了到了e=e+wuyu(A[i],C[i],G[i],T[i],m);这一步居然变成了0+0;搞不懂为什么,而且只有

4 10
ACGTACGTAC
CCGTACGTAG
GCGTACGTAT
TCGTACGTAA

这组数据错了,so我想了半天发现不写子函数更简单。于是AC代码:

#include<stdio.h>#include<string.h>int main(){    int t,m,n,i,j,flag,e,E;    char D;    int A[1100],C[1100],G[1100],T[1100];    scanf("%d",&t);    while(t--){        scanf("%d%d",&m,&n);getchar();        memset(A,0,sizeof(int)*1100);        memset(C,0,sizeof(int)*1100);        memset(G,0,sizeof(int)*1100);        memset(T,0,sizeof(int)*1100);        e=0;      for(i=1;i<=m;++i){        for(j=1;j<=n;++j){            scanf("%c",&D);            if(D=='A')                ++A[j];            else if(D=='C')                ++C[j];            else if(D=='G')                ++G[j];            else if(D=='T')                ++T[j];        }        getchar();      }      for(i=1;i<=n;++i){            if(A[i]>=C[i]&&A[i]>=G[i]&&A[i]>=T[i]){                printf("A");e=e+m-A[i];            }            else if(C[i]>A[i]&&C[i]>=G[i]&&C[i]>=T[i]){                printf("C");e=e+m-C[i];            }            else if(G[i]>A[i]&&G[i]>C[i]&&G[i]>=T[i]){                printf("G");e=e+m-G[i];            }            else if(T[i]>A[i]&&T[i]>C[i]&&T[i]>G[i]){                printf("T");e=e+m-T[i];            }      }      printf("\n%d\n",e);    }    return 0;}



0 0
原创粉丝点击