zoukankan      html  css  js  c++  java
  • Uva 1368.DNA Consensus String

    题目要求是对几个字符串进行分析,得到一个最优的字符串,使它满足与要求的字符串不同的字符之和最小。如果有多种解,则输出字典序最小的。

    注意:字符串的结束时  一定要加上

     1 #include <cstdio>
     2 #include <algorithm>
     3 #include <cstring>
     4 using namespace std;
     5 
     6 const int maxn=1005;
     7 char DNA[55][maxn];
     8 struct node{
     9     int i;
    10     char n;
    11     bool operator < (const node rhs)const{
    12         return i<rhs.i || (i==rhs.i && n>rhs.n);
    13     }
    14 };
    15 
    16 void Do();
    17 int Hamming(char s1[],char s2[],int len);
    18 
    19 int main(){
    20     //freopen("in.txt","r",stdin);
    21     int N;
    22     scanf("%d",&N);
    23     for(int i=0;i<N;i++)
    24         Do();
    25     return 0;
    26 }
    27 
    28 void Do(){
    29     int m,n;
    30     scanf("%d%d",&m,&n);
    31     int A[maxn],C[maxn],G[maxn],T[maxn];
    32     memset(A,0,sizeof(A));
    33     memset(C,0,sizeof(C));
    34     memset(G,0,sizeof(G));
    35     memset(T,0,sizeof(T));
    36 
    37     for(int i=0;i<m;i++){
    38         scanf("%s",DNA[i]);
    39         for(int j=0;j<n;j++){
    40             if(DNA[i][j]=='A')A[j]++;
    41             if(DNA[i][j]=='C')C[j]++;
    42             if(DNA[i][j]=='G')G[j]++;
    43             if(DNA[i][j]=='T')T[j]++;
    44         }
    45     }
    46     char DNA_min[maxn];
    47     for(int i=0;i<maxn;i++)
    48         DNA_min[i]='';
    49     for(int i=0;i<n;i++){
    50         node a[4]={{A[i],'A'},{C[i],'C'},{G[i],'G'},{T[i],'T'}};
    51         sort(a,a+4);
    52         DNA_min[i]=a[3].n;
    53     }
    54 
    55     int ans=0;
    56     for(int i=0;i<m;i++){
    57         ans+=Hamming(DNA_min,DNA[i],n);
    58     }
    59     printf("%s
    %d
    ",DNA_min,ans);
    60     return;
    61 }
    62 
    63 int Hamming(char s1[],char s2[],int len){
    64     int ans=0;
    65     for(int i=0;i<len;i++)
    66         if(s1[i]!=s2[i])
    67             ans++;
    68     return ans;
    69 }
  • 相关阅读:
    hdu 5976 Detachment
    poj 2096 Collecting Bugs
    hdu 4544 湫湫系列故事——消灭兔子
    Educational Codeforces Round 8 B. New Skateboard
    python 迭代器与生成器 区别
    【机器学习】EM算法详细推导和讲解
    【机器学习】极大似然估计详解
    标准sql工单模板
    【机器学习】LDA 浅谈
    Jupyter notebook入门教程
  • 原文地址:https://www.cnblogs.com/ohyee/p/5119102.html
Copyright © 2011-2022 走看看