题目描述:
AC代码:
/** Copyright (c) 2016, 安徽大学计算机科学与技术学院* All rights reserved.* 作 者: 杨磊* 完成日期:2016 年 12 月 12 日* 问题描述:* 求与给出的几个DNA序列相似最大的DNA序列。* 思路:纵向比较每纵出现最多的元素保存到新的一个DNA序列即为所求。*/#include#include int m, n; int main() { int t; scanf("%d", &t); while(t--) { int A, T, G, C; int max, cnt,i,j; char RNA[1005]; //新数组。 char DNA[55][1005]; scanf("%d%d", &m, &n); for(i = 0; i < m; i++) scanf("%s", DNA[i]); for(i = 0; i < n; i++) { A=C=G=T=max=0; for(j = 0; j < m; j++) { if(DNA[j][i] == 'A') A++; if(DNA[j][i] == 'T') T++; if(DNA[j][i] == 'G') G++; if(DNA[j][i] == 'C') C++; } if(A > max) { //为新数组纵向赋值。 max = A; RNA[i] = 'A'; } if(C > max) { max = C; RNA[i] = 'C'; } if(G > max) { max = G; RNA[i] = 'G'; } if(T > max) { max = T; RNA[i] = 'T'; } } RNA[n] = '\0'; //数组以'\0'结尾。 cnt = 0; for(i = 0; i < n; i++) for(j = 0; j < m; j++) if(RNA[i] != DNA[j][i]) cnt++; //比较新DNA与原来的不同。 puts(RNA); printf("%d\n", cnt); } return 0; }