详细解答Uva - 1368 - DNA Consensus String
来源:互联网 发布:故宫淘宝官方微博 编辑:程序博客网 时间:2024/05/16 01:48
这道题目的题意其实很简单,只是让Uva用英语解释了一遍就似乎很复杂了。。
题目大意:
给定m行n列的DNA序列,只由AGCT四个字母组成。求出一个长度为n的序列使其与给定的每行DNA相似度最高。更明白的说就是每一列出现次数最多的就是要求的对应这一列的字母,如果存在相同数量的字母,按照字典顺序排序。
例如:
T A T G A T A C
T A A G C T A C
A A A G A T C C
T G A G A T A C
T A A G A T G T
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
T A A G A T A C
================字典顺序: A-T-C-G
A C G T A C G T A C
C C G T A C G T A G
G C G T A C G T A T
T C G T A C G T A A
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
A C G T A C G T A A
至于不相似度就是你求出的这个字母与这一列字母不相同的个数相加,比如第二个例子,第一个A与第一列2.3.4行都不同,那么列不相似度是3,以此类推,每列相加就是不相似度。
下面是代码 --【Az】
#include <stdio.h>#include <stdlib.h>char DNA[55][1005];int findmost(char DNA[55][1005],int hang,int i){ int a,t,c,g,k; a = t = c = g = 0; for(k = 0;k < hang;k++) { if(DNA[k][i] == 'A') a++; else if(DNA[k][i] == 'G') g++; else if(DNA[k][i] == 'C') c++; else if(DNA[k][i] == 'T') t++; }
//下面的部分就是这一题的核心,可以称作贪心法,对吧?
if(a >= g && a >= c && a >= t) {printf("A");return g+c+t;} else if(c > a && c >= g && c >= t) {printf("C");return a+g+t;} else if(g > a && g > c && g >= t) {printf("G");return a+c+t;} else if(t > a && t > g && t > c) {printf("T");return a+c+g;}}int main(){ int num; scanf("%d",&num); int pt; for(pt = 0;pt < num;pt++) { int hang,lie,i,j; scanf("%d%d",&hang,&lie); getchar(); for(i = 0; i < hang; i++) { for(j = 0; j < lie; j++) { DNA[i][j] = getchar(); } getchar(); } int diff = 0; for(i = 0;i < lie;i++) { diff += findmost(DNA,hang,i); //with the function of print;我编写的这个函数带输出功能。【Az】 } printf("\n%d\n",diff); } return 0;}
0 0
- 详细解答Uva - 1368 - DNA Consensus String
- UVA 1368 - DNA Consensus String
- uva 1368 DNA Consensus String
- Uva-1368-DNA Consensus String
- UVa 1368 DNA Consensus String
- UVA 1368 DNA Consensus String
- UVA 1368 DNA Consensus String
- UVa:1368 DNA Consensus String
- uva 1368 - DNA Consensus String
- UVa 1368 - DNA Consensus String
- UVa 1368 - DNA Consensus String
- UVa 1368 DNA Consensus String
- UVa 1368 - DNA Consensus String
- UVA - 1368 DNA Consensus String
- UVa 1368DNA Consensus String
- UVa 1368 - DNA Consensus String
- Uva 1368 DNA Consensus String
- 【Uva 1368】 DNA Consensus String
- 以左下三角的形式输出杨辉三角形。
- Extjs Button控件的handler配置项和click事件
- 优化Linux下的内核TCP参数来提高服务器负载能力
- Android的4大组件
- 我理解的MySQL Double Write
- 详细解答Uva - 1368 - DNA Consensus String
- BitMap算法
- Android中的定时器AlarmManager
- 【LeetCode】Construct Binary Tree from Inorder and Postorder Traversal 解题报告
- svn 查看检出记录
- 谷歌在线代理
- 如何在web中安装 Google Analytics 数据分析
- 网络请求
- 【Android】loadData与loadDataWithBaseURL的区别