提示:两个等长字符串的Hamming距离,等于两个字符串相同的位置中,字符不同的个数。(如ACGT和GCGA的Hamming距离为2)

问题:

TATGATAC

TAAGCTAC

AAAGATCC

TGAGATAC

TAAGATGT

求一个 与上面所有DNA序列 Hamming距离最小 的DNA序列

解:TAAGATAC

思路:找到每一列中出现最多的字符,并把一个字符记录下来,当每一列出现最多的字符都记录下来后,这个记录就是答案。

方法1(小白):

#include<iostream>
using namespace std;
#define max 256
int n, m;
char DNA[10][10];char maxchar(int index) { //找到 列 中出现最多的字符int i,tmp=0, maxs;int W[max] = { 0 };char t;for (i = 0; i < m; i++) { // 统计列中各个字符的数量t = DNA[i][index];  W[t]++;}if (tmp < W['T']) {tmp = W['T'];maxs = 'T';}if (tmp < W['C']) {tmp = W['C'];maxs = 'C';}if (tmp < W['A']) {tmp = W['A'];maxs = 'A';}if (tmp < W['G']) {tmp = W['G'];maxs = 'G';}return maxs; //返回出现最多次的字符
}int main() {cin >> n >> m;int i, j;char str[10];for (i = 0; i < m; i++)for (j = 0; j < n; j++)cin >> DNA[i][j];for (i = 0; i < n; i++) {cout << maxchar(i); }return 0;
}

方法2(大神版):

#include<iostream>
#include<string>
using namespace std;
#include<algorithm>
#include<assert.h>
#include<vector>struct ChCnt {int cnt;//与c相同的字符的个数char c;void init(char ch = 'A') {c = ch;cnt = 0;}ChCnt() {init();}bool operator<(const ChCnt& cc2) const {  // sort排序用到的函数return cnt > cc2.cnt || (cnt == cc2.cnt && c < cc2.c);}
};int main() {int T = 1;int n, m;cin >> T;string line;vector<string> seqs; char IDX[256] = { 0 }; // 定好 字符 对应的 数组索引,方便找到 字符 对应的 结构体IDX['A'] = 0; IDX['C'] = 1; IDX['G'] = 2; IDX['T'] = 3;while (T--) {seqs.clear();cin >> m >> n;for (int i = 0; i < m; i++) {cin >> line;assert(line.size() == n); // 判断属否输入 n 个字符seqs.push_back(line);// 加入到 seqs 容器}string ansStr;int ans = 0;vector<ChCnt> ccs(4); // 定义4个ChCnt结构体,分别存放 A C G Tfor (int i = 0; i < n; i++) {// 每一列的开始都要对 结构体数组 进行初始化ccs[0].init('A');ccs[1].init('C');ccs[2].init('G');ccs[3].init('T');for (int j = 0; j < m; j++)ccs[IDX[seqs[j][i]]].cnt++;  // IDX在这里的作用是,能在结构体数组中 找到 字符 对应的 结构体sort(ccs.begin(), ccs.end());ansStr += ccs.front().c;ans += (m - ccs.front().cnt); // 加上每列的 Hamming距离 }cout << ansStr << endl << ans << endl;}return 0;}

求最小Hamming距离的DNA序列相关推荐

  1. 21行代码AC——习题3-7 DNA序列(UVa-1368)_解题报告

    励志用尽量少的代码做高效表达. 题目(提交)链接→UVa-1368 思路: DNA序列:按列遍历,记录每一列出现次数最多(若同样多,则字典序最小)的字母,录入s串累加. 距离:重新遍历,录入出现次数比 ...

  2. 3-7 DNA序列(DNA Consensus String, ACM/ICPC Seoul 2006, UVa1368)

    输入m个长度均为n的DNA序列,求一个DNA序列,到所有序列的总Hamming距离尽量 小. 两个等长字符串的Hamming距离等于字符不同的位置个数,例如,ACGT和GCGA的 Hamming距离为 ...

  3. DNA序列 UVa1368

    原题链接:https://cn.vjudge.net/problem/UVA-1368 大概题意: 输入m个长度均为n的DNA序列,求一个DNA序列,到所有序列的总Hamming距离尽量小.两个等长字 ...

  4. 中南大学上机:PIPI的DNA序列

    问题 B: PIPI的DNA序列 时间限制: 1 Sec  内存限制: 128 MB 题目描述 PIPI有m个长度均为n的DNA序列,求一个DNA序列,使其到所有序列的总HaMM距离尽量小.  HaM ...

  5. 信息论与编码_信息与编码系列(五)不可靠信道——决策法则、Hamming距离与信息论基本定理...

    目录 序 决策法则(decision rules) Hamming距离 信息论基本定理--Shannon 定理 Shannon定理的逆命题 序 这个算是正本书中关于信息论的最后内容了,后面就是关于编码 ...

  6. dna序列分类数学建模matlab,数学建模DNA序列分类模型(终稿).doc

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp高等教育&nbsp>&nbsp生物学 数学建模DNA序列分类模型(终稿).doc32页 本文 ...

  7. 基于主成分分析与Fisher判别的DNA序列分类

    基于主成分分析与Fisher判别的DNA序列分类 [摘要]: 特征提取:对于DNA序列,首先将其分为编码DNA特征与非编码DNA特征.对于非编码DNA,统计A,T,C,G各个碱基以及A+T在其中出现的 ...

  8. Python访问街区10个点,并俩俩绘制一条线,得到5条线,求最短的距离和?

    Python访问街区10个点,并俩俩绘制一条线,得到5条线,求最短的距离和? 1. 效果图 2. 源码 参考 上一篇博客介绍了Python访问街区所有节点最短路径问题,并结合matplotlib可视化 ...

  9. Bridge Across Islands POJ - 3608 旋转卡壳求凸包最近距离

    \(\color{#0066ff}{题目描述}\) 几千年前,有一个小王国位于太平洋的中部.王国的领土由两个分离的岛屿组成.由于洋流的冲击,两个岛屿的形状都变成了凸多边形.王国的国王想建立一座桥来连接 ...

最新文章

  1. golang中变量使用情况
  2. 实现一个简易的RPC
  3. BZOJ2326 [HNOI2011]数学作业 【矩阵快速幂】
  4. 【Python】8000字概括精髓,pandas必知必会50例
  5. HipHop算法:利用微博互动关系挖掘社交圈
  6. ubuntu19.10安装remarkable
  7. php获取文件上传进度,PHP使用APC获取上传文件进度
  8. oracle关闭 manager,Oracle Enterprise Manager 11g 启停
  9. greenfoot推箱子游戏_推箱子小游戏V2.0更新
  10. 微机计算机硬件技术实用教程知识点,微机接口技术实用教程1.ppt
  11. Python 字符串(三)
  12. CMD下netstat ping等命令提示:不是内部或外部命令,也不是可运行的程序或批处理文件。
  13. python做数据排序,python 实现对数据的排序和绘图
  14. Struts2之类型转换中的错误
  15. web全栈工程师进阶学习线路图
  16. OLED多级菜单记录
  17. win7无声音显示“未插入扬声器或耳机” 怎么解决
  18. 聚焦扶贫,爱在瑶山,深圳市华南物流商会在行动
  19. Docker镜像创建的三种方式详解——dockerfile制作apache镜像
  20. uniapp中使用iconfont多色图标

热门文章

  1. 百度Apollo 3.5是如何设计Cyber RT计算框架的?
  2. NIPS论文排行榜出炉,南大周志华5篇论文入选
  3. AI一分钟 | ​被大家吐槽的网红机器人索菲亚开微博了;阿里人工智能团队iDST获得道路场景分割三项第一
  4. SpringBoot+flowable快速实现工作流,so easy!
  5. 接口优化:Redis预减库存,减少对数据库访问方案
  6. 最强 JDK15 安装与讲解,有点想升级,终于要废弃偏向锁了!
  7. 浅析 VO、DTO、DO、PO 的概念、区别和用处!
  8. 权限设计的一些想法和思考
  9. 热加载和热部署,没听过?看看 Tomcat 是怎么实现的
  10. 有 Bug 不会调试 ? 这篇文章很详细 !