求最小Hamming距离的DNA序列
提示:两个等长字符串的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序列相关推荐
- 21行代码AC——习题3-7 DNA序列(UVa-1368)_解题报告
励志用尽量少的代码做高效表达. 题目(提交)链接→UVa-1368 思路: DNA序列:按列遍历,记录每一列出现次数最多(若同样多,则字典序最小)的字母,录入s串累加. 距离:重新遍历,录入出现次数比 ...
- 3-7 DNA序列(DNA Consensus String, ACM/ICPC Seoul 2006, UVa1368)
输入m个长度均为n的DNA序列,求一个DNA序列,到所有序列的总Hamming距离尽量 小. 两个等长字符串的Hamming距离等于字符不同的位置个数,例如,ACGT和GCGA的 Hamming距离为 ...
- DNA序列 UVa1368
原题链接:https://cn.vjudge.net/problem/UVA-1368 大概题意: 输入m个长度均为n的DNA序列,求一个DNA序列,到所有序列的总Hamming距离尽量小.两个等长字 ...
- 中南大学上机:PIPI的DNA序列
问题 B: PIPI的DNA序列 时间限制: 1 Sec 内存限制: 128 MB 题目描述 PIPI有m个长度均为n的DNA序列,求一个DNA序列,使其到所有序列的总HaMM距离尽量小. HaM ...
- 信息论与编码_信息与编码系列(五)不可靠信道——决策法则、Hamming距离与信息论基本定理...
目录 序 决策法则(decision rules) Hamming距离 信息论基本定理--Shannon 定理 Shannon定理的逆命题 序 这个算是正本书中关于信息论的最后内容了,后面就是关于编码 ...
- dna序列分类数学建模matlab,数学建模DNA序列分类模型(终稿).doc
您所在位置:网站首页 > 海量文档  > 高等教育 > 生物学 数学建模DNA序列分类模型(终稿).doc32页 本文 ...
- 基于主成分分析与Fisher判别的DNA序列分类
基于主成分分析与Fisher判别的DNA序列分类 [摘要]: 特征提取:对于DNA序列,首先将其分为编码DNA特征与非编码DNA特征.对于非编码DNA,统计A,T,C,G各个碱基以及A+T在其中出现的 ...
- Python访问街区10个点,并俩俩绘制一条线,得到5条线,求最短的距离和?
Python访问街区10个点,并俩俩绘制一条线,得到5条线,求最短的距离和? 1. 效果图 2. 源码 参考 上一篇博客介绍了Python访问街区所有节点最短路径问题,并结合matplotlib可视化 ...
- Bridge Across Islands POJ - 3608 旋转卡壳求凸包最近距离
\(\color{#0066ff}{题目描述}\) 几千年前,有一个小王国位于太平洋的中部.王国的领土由两个分离的岛屿组成.由于洋流的冲击,两个岛屿的形状都变成了凸多边形.王国的国王想建立一座桥来连接 ...
最新文章
- golang中变量使用情况
- 实现一个简易的RPC
- BZOJ2326 [HNOI2011]数学作业 【矩阵快速幂】
- 【Python】8000字概括精髓,pandas必知必会50例
- HipHop算法:利用微博互动关系挖掘社交圈
- ubuntu19.10安装remarkable
- php获取文件上传进度,PHP使用APC获取上传文件进度
- oracle关闭 manager,Oracle Enterprise Manager 11g 启停
- greenfoot推箱子游戏_推箱子小游戏V2.0更新
- 微机计算机硬件技术实用教程知识点,微机接口技术实用教程1.ppt
- Python 字符串(三)
- CMD下netstat ping等命令提示:不是内部或外部命令,也不是可运行的程序或批处理文件。
- python做数据排序,python 实现对数据的排序和绘图
- Struts2之类型转换中的错误
- web全栈工程师进阶学习线路图
- OLED多级菜单记录
- win7无声音显示“未插入扬声器或耳机” 怎么解决
- 聚焦扶贫,爱在瑶山,深圳市华南物流商会在行动
- Docker镜像创建的三种方式详解——dockerfile制作apache镜像
- uniapp中使用iconfont多色图标
热门文章
- 百度Apollo 3.5是如何设计Cyber RT计算框架的?
- NIPS论文排行榜出炉,南大周志华5篇论文入选
- AI一分钟 | ​被大家吐槽的网红机器人索菲亚开微博了;阿里人工智能团队iDST获得道路场景分割三项第一
- SpringBoot+flowable快速实现工作流,so easy!
- 接口优化:Redis预减库存,减少对数据库访问方案
- 最强 JDK15 安装与讲解,有点想升级,终于要废弃偏向锁了!
- 浅析 VO、DTO、DO、PO 的概念、区别和用处!
- 权限设计的一些想法和思考
- 热加载和热部署,没听过?看看 Tomcat 是怎么实现的
- 有 Bug 不会调试 ? 这篇文章很详细 !