UVA —1368 DNA Consensus String

来源:互联网 发布:数据库逻辑模型图 编辑:程序博客网 时间:2024/06/07 14:07

题意:输入m个长度均为n的DNA序列,求一个DNA序列,到所有序列的总的Hamming距离尽量小。两个等长字符串              的Hamming距离等于字符不同的位置个数。

输入:m(4<=m<=50) , n(4<=n<=1000),以及m个长度均为n的DNA序列

输出:m个序列的Hamming距离和最小的DNA序列和对应的距离。如有多解,要求为字典序最小的解。


字符串题,千万不要忘记在要输出的字符串后加'\0'

#include<stdio.h>#include<string.h>#include<map>using namespace std;int main(){    int t;    scanf("%d",&t);    while(t--)    {        char s[55][1100];        char x[1100];        int m,n,sum=0;        scanf("%d%d",&m,&n);        int i,j,k;        for(i = 0; i < m; i ++)            scanf("%s",s[i]);        map<char,int>q;        map<char,int>::iterator it;        for(i = 0; i < n; i ++)        {            q['A'] = 0;            q['C'] = 0;            q['G'] = 0;            q['T'] = 0;            for( j = 0; j < m; j ++)            {                q[s[j][i]]++;            }            int maxx = 0;            for(it = q.begin(); it != q.end(); it++)            {                if(maxx < (*it).second)                {                    maxx = (*it).second;                    x[i] = (*it).first;                }            }            sum += m-maxx;        }        x[n]='\0';//        printf("%s\n",x);        printf("%d\n",sum);    }    return 0;}