网络公司哪个效果好,搜索优化报价,长春网站建设加q479185700,wordpress add filter输入m个长度均为n的DNA序列#xff0c;求一个DNA序列#xff0c;到所有序列的总Hamming距离尽量小。两个等长字符串的Hamming距离等于字符不同的位置个数#xff0c;例如#xff0c;ACGT和GCGA的Hamming距离为2#xff08;左数第1, 4个字符不同#xff09;。 输入整数m和…输入m个长度均为n的DNA序列求一个DNA序列到所有序列的总Hamming距离尽量小。两个等长字符串的Hamming距离等于字符不同的位置个数例如ACGT和GCGA的Hamming距离为2左数第1, 4个字符不同。 输入整数m和n4≤m≤50,4≤n≤1000以及m个长度为n的DNA序列只包含字母ACGT输出到m个序列的Hamming距离和最小的DNA序列和对应的距离。如有多解要求为字典序最小的解。例如对于下面5个DNA序列最优解为TAAGATAC。 TATGATAC TAAGCTAC AAAGATCC TGAGATAC TAAGATGT
解法
use std::{collections::HashMap, io};fn main() {let mut grid: VecVecchar vec![];let mut buf String::new();io::stdin().read_line(mut buf).unwrap();let mut iter buf.split_whitespace();let m: usize iter.next().unwrap().parse().unwrap();let n: usize iter.next().unwrap().parse().unwrap();for _i in 0..m {let mut buf String::new();io::stdin().read_line(mut buf).unwrap();let cs buf.trim().chars().collect();grid.push(cs);}/*for s in grid {let s: String s.iter().collect();println!({:?}, s);}*/let mut ans String::new();for i in 0..n {let mut kv HashMap::new();for j in 0..m {kv.entry(grid[j][i]).and_modify(|num| *num 1).or_insert(1);}let mut mc ( , 0);let mut cs: Vec_ kv.keys().collect();cs.sort();for k in cs {if kv.get(k).unwrap() mc.1 {mc (*k, *kv.get(k).unwrap());}}ans.push(mc.0);}println!({}, ans);
}