输入m个长度均为n的DNA序列,求一个DNA序列,到所有序列的总Hamming距离尽量
小。 两个等长字符串的Hamming距离等于字符不同的位置个数,例如,ACGT和GCGA的
Hamming距离为2(左数第1, 4个字符不同)。
输入整数m和n(4≤m≤50, 4≤n≤1000),以及m个长度为n的DNA序列(只包含字母
A,C,G,T),输出到m个序列的Hamming距离和最小的DNA序列和对应的距离。 如有多
解,要求为字典序最小的解。 例如,对于下面5个DNA序列,最优解为TAAGATAC。
TATGATAC
TAAGCTAC
AAAGATCC
TGAGATAC

TAAGATGT

将A,C,G,T看成是0,1,2,3;

定义一个数组int ans[4][50];

对于每一行的输入,1<=i<=m;

ans[字母][i]++;

这样就记录了每一列每种字母出现的总次数;

最后遍历ans的每一列 把每一列的第一个最大值所在行转换成字母

合起来就是最优解;

总行数减去字母出现最多的字母数在第一列到第n列求和就是hamming值

#include <bits/stdc++.h>using namespace std;int ans[4][1000];//放次数的数组
char DNA[50][1000];   //放输入DNA的数组
char mDNA[1000];    //放最优解得数组
int T,m,n;
map<char,int> m1;
char zimu[4]={'A','C','G','T'};
int main()
{//freopen("input.txt","r",stdin);m1['A']=0;m1['C']=1;m1['G']=2;m1['T']=3;scanf("%d",&T);while(T>0){int len=0;scanf("%d%d",&m,&n);getchar();memset(ans,0,sizeof(ans));for(int i=0;i<m;i++){int j=0;char c;while((c=getchar())!='\n'&&j<n){int pos=0;switch(c){case 'A':pos=0;break;case 'C':pos=1;break;case 'G':pos=2;break;case 'T':pos=3;break;}ans[pos][j]++;j++;}}int max1;int pos1;for(int i=0;i<n;i++){max1=ans[0][i];pos1=0;for(int j=0;j<4;j++){if(ans[j][i]>max1){max1=ans[j][i];pos1=j;}}len+=m-max1;mDNA[i]=zimu[pos1];}for(int i=0;i<n;i++){putchar(mDNA[i]);}printf("\n%d\n",len);T--;}return 0;
}

转载于:https://www.cnblogs.com/alonglyn/p/9953966.html

3-7 DNA序列(DNA Consensus String, ACM/ICPC Seoul 2006, UVa1368)相关推荐

  1. 例题3-6 环状序列(Circular Sequence, ACM/ICPC Seoul 2004, UVa1584)

    长度为n的环状串有n种表示法,分别为从某 个位置开始顺时针得到.例如,图3-4的环状串 有10种表示: CGAGTCAGCT,GAGTCAGCTC,AGTCAGCTCG等.在这些表示法中,字典序最小的 ...

  2. 【POJ No. 2778】DNA 序列 DNA Sequence

    [POJ No. 2778]DNA 序列 DNA Sequence 北大OJ 题目地址 [题意] DNA序列是一个只包含A.C.T和G的序列.分析DNA序列片段非常有用,若动物的DNA序列包含片段AT ...

  3. 环状序列(Circular Sequence,ACM/ICPC Seoul 2004,UVa1584)

    长度为n的环状串有n种表示法,分别为某个位置开始顺时针得到.CGAGTCAGCT,GAGTCAGCTC,AGTCAGCTCG等.在这些表示法中,字典序最小的称为"最小表示".输入一 ...

  4. 《算法竞赛入门经典》 例题3-5 生成元 (Digit Generator, ACM ICPC Seoul 2005,UVa)

    原题及翻译 For a positive integer N , the digit-sum of N is defined as the sum of N itself and its digits ...

  5. 例题3-5 生成元(Digit Generator, ACM/ICPC Seoul 2005, UVa1583)

    如果x加上x的各个数字之和得到y,就说x是y的生成元.给出n(1≤n≤100000),求最小 生成元.无解输出0.例如,n=216,121,2005时的解分别为198,0,1979. 先附上自己的想法 ...

  6. 生成元(Digit Generator ,ACM/ICPC Seoul 2005 ,UVa 1583)

    生成元:如果 x 加上 x 各个数字之和得到y,则说x是y的生成元. n(1<=n<=100000),求最小生成元,无解输出0. 例如:n=216 , 解是:198 198+1+9+8=2 ...

  7. UVa1600 习题6-5 巡逻机器人 (Patrol Robot,ACM/ICPC Hanoi 2006)

    原题链接: UVa-1600 题目大意: 模拟机器人要从一个m*n(m和n的范围都在1到20的闭区间内)的网格的左上角(1,1)走到右下角(m,n).网格中的一些格子是空地,用0表示,其它格子是障碍, ...

  8. 习题6-5 巡逻机器人(Patrol Robot, ACM/ICPC Hanoi 2006, UVa1600)

    同Uva816,本题在本质上也是迷宫问题,连续穿越的次数k起到了关键作用,故用三元组表示状态. #include <iostream> #include <string> #i ...

  9. 得分(Score,ACM/ICPC Seoul 2005,UVa1585)

    给出一个由O和X组成的串(长度为1~80),统计得分.每个O的得分为目前连续出现的O的个数,X的得分为0.例如,OOXXOXXOOO的得分为1+2+0+0+1+0+0+1+2+3. 输入样例 5 OO ...

最新文章

  1. c#中SqlHelper类的编写(三)
  2. 深度学习(计算机视觉)面试中问题(一)
  3. python合并路径_python url合并与分离
  4. CATALINA_BASE与CATALINA_HOME的区别
  5. Asp.net 请求中变量的保存方式
  6. MySQL优化(四):count()
  7. sublime配置python环境变量_Sublime Python环境配置
  8. 第二次作业——小学生四则运算
  9. python语言数值操作符_Python之组合数据类型、逻辑操作符、控制流语句、算术操作符...
  10. python模拟支付宝蚂蚁森林的能量产生过程_蚂蚁森林能量产生规则
  11. 泛微数字化督查督办平台:不见面也能高效落实工作、管理到位
  12. Mac 谷歌Chrome设置浏览器跨域
  13. .bat批处理(十一):替换字符串中包含百分号%的子串
  14. 笔记丨元胞自动机模拟城市扩张过程
  15. 17.10.21B组题解
  16. 【电源设计】11变压器在开关电源中的应用
  17. 系统光驱盘符不见的解决方法
  18. abel数值反演的matlab实现,abel变换数值反演的积分算子方法.pdf
  19. STM32 内存分布探究
  20. Stata:psestimate-倾向得分匹配(PSM)中匹配变量的筛选

热门文章

  1. linux 自动发邮件脚本,科学网—用linux脚本自动发送和收取邮件 - 周宇的博文
  2. filter过滤器_不了解布隆过滤器?一文给你整的明明白白
  3. php外边框样式,CSS中的边框样式
  4. oracle包同义词报错,Oracle——04同义词与数据库链接
  5. linux睡眠进程,linux一个进程如何睡眠
  6. 如何用c语言随机输出除法题,随机产生30道四则运算(C语言)
  7. 特斯拉蛇形充电机器人_特斯拉将内存设备锁入手套箱内 确保哨兵模式/TeslaCam数据安全...
  8. Vue-cli 自定义配置
  9. git 编译安装 centos7
  10. python os.path