DNA序列(DNA Consensus String)

/*DNA序列*/
#include
#include
int main ()
{
	int T;
	scanf("%d",&T);
	while(T--)
	{
		int m,n;
		scanf("%d%d",&m,&n);
		getchar();
		char dna[55][1005];
		memset(dna,0,sizeof(dna));
		for(int i=0;i

这道题的思路很简单,写起来却一点不易(也可能是我菜)~

找出每一列出现次数最多的字符,将其记录下来,组合就行了;至于汉明距离,一列一列地去算与组合序列不同的个数,求和即可。

当时被怎么找出一列中出现最多的字符难住了,后来想到用二维数组向下“压缩”的方法。acgt是用来记录ACGT出现次数的4行n列数组,然后对acgt数组一列一列找出每列最大数所在的行数,将其对应的字符(ACGT)记录在maxx数组中。

因为是按照ACGT的顺序记录的,所以如果有多解,输出的将是字典序。

当时借鉴了下面这个博客,才想到ACGT也用二维的:

https://blog.csdn.net/su_cicada/article/details/78876912

你可能感兴趣的:(c语言,算法)