DNA序列 (DNA Consensus String, ACM/ICPC Seoul 2006 UVa1368)

该博客探讨了如何寻找一个DNA序列,使得它与给定的m个DNA序列的总Hamming距离最小。文章指出,问题的关键在于计算字符不同的位置个数,并在存在多个最优解时选择字典序最小的序列。作者分享了一个样例,以及个人在解决这个问题时遇到的陷阱和解决方案,并提供了原题链接以供进一步研究。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

输入m个长度均为n的DNA序列,求一个DNA序列,到所有序列的总Hamming距离尽量小。两个等长字符串的Hamming距离等于字符不同的位置个数,例如,ACGT和GCGA的Hamming距离为2(左数第1, 4个字符不同)。
输入整数m和n(4≤m≤50, 4≤n≤1000),以及m个长度为n的DNA序列(只包含字母A,C,G,T),输出到m个序列的Hamming距离和最小的DNA序列和对应的距离。 如有多解,要求为字典序最小的解。 例如,对于下面5个DNA序列,最优解为TAAGATAC。

TAAGCTAC
AAAGATCC
TGAGATAC
TAAGATGT

样例:
Input:

3 
5 8 
TATGATAC 
TAAGCTAC 
AAAGATCC 
TGAGATAC 
TAAGATGT 
4 10 
ACGTACGTAC 
CCGTACGTAG 
GCGTACGTAT 
TCGTACGTAA 
6 10 
ATGTTACCAT 
AAGTTACGAT 
AACAAAGCAA 
AAGTTACCTT 
AAGTTACCAA 
TACTTACCAA

Sample Output

TAAGATAC 
7 
ACGTACGTAA 
6 
AAGTTACCAA 
12

本题目不是很难,就是麻烦点,个人感觉有几个小陷阱,比如遍历字符串矩阵时候先按照列来遍历, 这个小bug我一直没发现,整了很长时间才找到,以后注意了,这里给出原题链接 https://vjudge.net/contest/65968#problem/G 下面给出个人的渣代码.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值