uva1368
来源:互联网 发布:江西广电网络宽带投诉 编辑:程序博客网 时间:2024/06/07 00:01
题目大意:
给m个长度为n的DNA序列,求一个DNA序列到所有序列的总汉明距离最小,汉明距离为不同字符的位置的个数。
思路:
用贪心的方法,刚开始还以为是在给定的DNA中选出一个,可是并不是,是要求一个DNA序列可以使得它到给定的DNA序列的距离最小。每次都求出一列中最多相同的字母。
代码:
#include <iostream>using namespace std;#include <cstring>#include <stdio.h>char grid[1005];struct node { int a,c,g,t;}N[1005];int main() { int n,m; int T; scanf("%d",&T); while(T--) { scanf("%d %d",&n,&m); for(int i = 0 ; i < m; i++) N[i].a = N[i].c = N[i].g = N[i].t = 0; for(int i = 0; i < n; i++) { scanf("%s",grid); for(int j = 0; j < m; j++) { if(grid[j] == 'A') N[j].a++; else if(grid[j] == 'C') N[j].c++; else if(grid[j] == 'G') N[j].g++; else if(grid[j] == 'T') N[j].t++; } } char s[1005]; int maxx,ans = 0; for(int i = 0; i < m; i++) { s[i] = 'A'; maxx = N[i].a; if(N[i].c > maxx) { s[i] = 'C'; maxx = N[i].c; } if(N[i].g > maxx) { s[i] = 'G'; maxx =N[i].g; } if(N[i].t > maxx) { s[i] = 'T'; maxx = N[i].t; } ans += n - maxx; } s[m] = '\0'; printf("%s\n%d\n",s,ans); } return 0;}
0 0
- UVA1368
- uva1368
- Uva1368
- UVa1368
- UVA1368
- UVa1368
- UVa1368
- uva1368(贪心)
- uva1368 - DNA Consensus String
- Uva1368 DNA Consensus String
- Uva1368 - DNA Consensus String
- UVA1368- DNA Consensus String
- uva1368 字符串构造
- UVA1368 - DNA Consensus String
- uva1368 - DNA Consensus String
- DNA序列 uva1368
- uva1368 - DNA Consensus String
- [UVA1368]DNA Consensus String
- USACO-Section 3.1 Humble Numbers(DP)
- cocos2dx 3.3 pluginx tools文件夹分析
- 通过StoryBoard创建UIViewController
- 起伏地形环境轮式机器人运动控制研究
- eclipse中hql语句出现 unexpected token: 8报错
- uva1368
- JVM-垃圾收集器
- 自己动手开发一个 Web 服务器(一)
- 排序算法大总结
- iOS自定义UITabBar
- openwrt目录结构
- 博客列表
- Linux VPS主机利用Crontab实现定时重启任务
- HttpUrlConnection实现文件下载