• UVa 1368 DNA Consensus String


    题意:给出n个长度为len的DNA序列,求一个DNA序列,使得该序列到这m个DNA序列的距离尽量短,两个等长字符串的字符不同的位置个数即为两个字符串之间的距离

    记录下每个位置出现次数最多的字母,再扫一遍这n个串,求出距离

     1 #include<iostream>  
     2 #include<cstdio>  
     3 #include<cstring> 
     4 #include <cmath>   
     5 #include<algorithm>  
     6 using namespace std;
     7 
     8 typedef long long LL;
     9 char s[55][1005],t[1005];
    10 int cnt[1005][105],num[1005];
    11 
    12 int main()
    13 {
    14     int ncase,i,j,k,ans,n,len;
    15     scanf("%d",&ncase);
    16     while(ncase--)
    17     {
    18         memset(cnt,0,sizeof(cnt));
    19         memset(num,0,sizeof(num));
    20         scanf("%d %d",&n,&len);
    21         for(i=0;i<n;i++) cin>>s[i];
    22         
    23         for(i=0;i<n;i++)
    24         {
    25             for(j=0;j<len;j++)
    26             cnt[j][s[i][j]-'A']++;
    27         }
    28         
    29         for(j=0;j<len;j++){
    30             int max=-1;
    31             for(k=0;k<100;k++){
    32                 if(cnt[j][k]>max){
    33                     max=cnt[j][k];
    34                     t[j]=k+'A';    
    35                     num[j]=max;                
    36                 }
    37                 
    38             }
    39         }
    40         
    41         int ans=0;
    42         for(i=0;i<n;i++){
    43             for(j=0;j<len;j++){
    44                 if(s[i][j]!=t[j]) ans++;;
    45             }
    46         }
    47         
    48         for(j=0;j<len;j++) printf("%c",t[j]);
    49         printf("
    ");
    50         printf("%d
    ",ans);
    51     }
    52 }
    View Code
  • 相关阅读:
    [leetCode]100.相同的树
    [leetCode]88.合并两个有序数组
    [leetCode]83.删除排序链表中的重复元素
    排序算法总结
    [leetCode]69. x 的平方根
    POJ 1151 Atlantis
    POJ 3468 A Simple Problem with Integers
    SGU 271 Book Pile
    POJ 2970 The lazy programmer
    FZU 2254 英语考试
  • 原文地址:https://www.cnblogs.com/wuyuewoniu/p/4311093.html
Copyright © 2020-2023  润新知