DNA Consensus String
2016-02-03 18:19
281 查看
题意:
找到一个dna序列,使得所有脱氧核糖核酸到给定的脱氧核糖核酸(讲真,输入法自带翻译)变化得最少
思路:
受中位数思想的影响,觉得就是找到里面的一个脱氧核糖核酸序列,使得其他序列到他的变化对称,可是没法操作。
看了题解,发现就是逐位找到出现最多此的那个,代码很简单。不过由于是逐位比较,所以其实是竖着存储的。
找到一个dna序列,使得所有脱氧核糖核酸到给定的脱氧核糖核酸(讲真,输入法自带翻译)变化得最少
思路:
受中位数思想的影响,觉得就是找到里面的一个脱氧核糖核酸序列,使得其他序列到他的变化对称,可是没法操作。
看了题解,发现就是逐位找到出现最多此的那个,代码很简单。不过由于是逐位比较,所以其实是竖着存储的。
#include<cstdio> #include<algorithm> using namespace std; struct DNA { int a, t, c, g; }d[1005]; char s[1005]; int main() { int kase; scanf("%d", &kase); char q; while(kase--) { int n, m; scanf("%d%d", &n, &m); for(int i=0; i<m; i++) d[i].a=d[i].t=d[i].c=d[i].g=0; for(int i=0; i<n; i++) { scanf("%s", s); for(int j=0; j<m; j++) {//记录每一位 if(s[j] == 'A') d[j].a++; else if(s[j] == 'T') d[j].t++; else if(s[j] == 'C') d[j].c++; else if(s[j] == 'G') d[j].g++; } } int maxn = 0; int ans = 0; for(int i=0; i<m; i++) { maxn = 0;//按字典集排序 if(maxn < d[i].a) {s[i] = 'A'; maxn = d[i].a;} if(maxn < d[i].c) {s[i] = 'C'; maxn = d[i].c;} if(maxn < d[i].g) {s[i] = 'G'; maxn = d[i].g;} if(maxn < d[i].t) {s[i] = 'T'; maxn = d[i].t;} ans += n-maxn; } s[m] = 0; printf("%s\n%d\n", s, ans); } return 0; }
相关文章推荐
- 程序相关的免费视频的网站9秒
- 【Java】 批处理
- Zabbix 监控软件简单安装
- POJ1001 高精度乘法
- EasyMock 使用方法与原理剖析
- 基于ARM-contexA9-Linux驱动开发:如何获取板子上独有的ID号
- 基于ARM-contexA9-Linux驱动开发:如何获取板子上独有的ID号
- 百度地图再次签名报230错误
- 基于ARM-contexA9-Linux驱动开发:如何获取板子上独有的ID号
- uwsgi+nginx+web.py备忘
- TBB之Timing
- 漫游Kafka设计篇之数据持久化
- keepalived+LVS 实现双机热备、负载均衡、失效转移 高性能 高可用 高伸缩性 服务器集群
- quick实现虚拟摇杆
- grafana安装,与zabbix结合使用监控mysql
- hdu 1698 Just a Hook(线段树区间覆盖)
- 广西首届网络安全选拔赛 WEB Writeup
- 收藏5
- virgo tomcat下载
- CURLOPT_HEADER 不可小觑的作用