x3-7DNA Consensus String

https://vjudge.net/problem/UVA-1368

按字典序求每个字在当前位置的个数;把个数多的字典序小的放入一个数组,最后输出;

#include <iostream>
#include<cstring>
#include<cstdio>
using namespace std;

int main()
{
    int _;
    scanf("%d",&_);
    while(_--){
        int flag[4][1005];
        memset(flag,0,sizeof(flag));
        int m,n;
        scanf("%d%d",&m,&n);
        getchar();
        char c;
        for(int i=1;i<=m;i++){
            for(int j=0;j<n;j++){
                c=getchar();
                if(c=='A')flag[0][j]++;
                else if(c=='C')flag[1][j]++;
                else if(c=='G')flag[2][j]++;
                else flag[3][j]++;
            }
            getchar();
        }

//        for(int i=0;i<n;i++){
//            cout<<flag[0][i]<<' '<<flag[1][i]<<' '<<flag[2][i]<<' '<<flag[3][i]<<endl;
//        }
        int maxx=-1,ind,ans=0;
        char s[1005];
        for(int i=0;i<n;i++){
            ind=0,maxx=-1;
            for(int j=0; j<4; j++) {
                if(maxx<flag[j][i]){
                    maxx=flag[j][i];
                    ind=j;
                }
            }
            ans=ans+(m-maxx);
            if(ind==0)s[i]='A';
            else if(ind==1)s[i]='C';
            else if(ind==2)s[i]='G';
            else s[i]='T';
        }
        for(int i=0;i<n;i++){
            printf("%c",s[i]);
        }
        printf("\n");
        printf("%d\n",ans);
    }
    return 0;
}
/*
3
5 8
TATGATAC
TAAGCTAC
AAAGATCC
TGAGATAC
TAAGATGT
4 10
ACGTACGTAC
CCGTACGTAG
GCGTACGTAT
TCGTACGTAA
6 10
ATGTTACCAT
AAGTTACGAT
AACAAAGCAA
AAGTTACCTT
AAGTTACCAA
TACTTACCAA
*/
发布了97 篇原创文章 · 获赞 3 · 访问量 9427

猜你喜欢

转载自blog.csdn.net/foolishpichao/article/details/100126767