百练OJ:1007:DNA排序
2018-01-20 20:36
645 查看
题目链接:1007:DNA排序
描述
现在有一些长度相等的DNA串(只由ACGT四个字母组成),请将它们按照逆序对的数量多少排序。
逆序对指的是字符串A中的两个字符A[i]、A[j],具有i < j 且 A[i] > A[j] 的性质。如字符串”ATCG“中,T和C是一个逆序对,T和G是另一个逆序对,这个字符串的逆序对数为2。
输入第1行:两个整数n和m,n(0<n<=50)表示字符串长度,m(0<m<=100)表示字符串数量
第2至m+1行:每行是一个长度为n的字符串
输出按逆序对数从少到多输出字符串,逆序对数一样多的字符串按照输入的顺序输出。
样例输入
样例输出
解题代码:
描述
现在有一些长度相等的DNA串(只由ACGT四个字母组成),请将它们按照逆序对的数量多少排序。
逆序对指的是字符串A中的两个字符A[i]、A[j],具有i < j 且 A[i] > A[j] 的性质。如字符串”ATCG“中,T和C是一个逆序对,T和G是另一个逆序对,这个字符串的逆序对数为2。
输入第1行:两个整数n和m,n(0<n<=50)表示字符串长度,m(0<m<=100)表示字符串数量
第2至m+1行:每行是一个长度为n的字符串
输出按逆序对数从少到多输出字符串,逆序对数一样多的字符串按照输入的顺序输出。
样例输入
10 6 AACATGAAGG TTTTGGCCAA TTTGGCCAAA GATCAGATTT CCCGGGGGGA ATCGATGCAT
样例输出
CCCGGGGGGA AACATGAAGG GATCAGATTT ATCGATGCAT TTTTGGCCAA TTTGGCCAAA
解题代码:
def compare(s1,s2): p=['A','C','G','T'] if p.index(s1) > p.index(s2): return True else: return False def getLength(string): count = 0 for i in range(len(string)): for j in range(i+1, len(string)): if compare(string[i], string[j]): count += 1 return count cin = input() n = int(cin.split()[0]) m = int(cin.split()[1]) l = list() a = list() for i in range(m): string = input() l.append(string) a.append(int(getLength(string))) for i in range(m): for j in range(i): if a[j] > a[i]: a[j], a[i] = a[i], a[j] l[j], l[i] = l[i], l[j] for t in range(m): print(l[t])
相关文章推荐
- 百练1007:DNA排序
- 九度oj 题目1007:奥运排序问题 【ZJU2010考研机试题3】【容易理解混乱】
- POJ 1007 DNA 排序
- JD_OJ 题目1007:奥运排序问题
- 九度OJ 1007 奥运排序问题
- 九度OJ 1007:奥运排序问题 (排序)
- POJ 1007 DNA 排序
- 九度OJ 1007:奥运排序问题 (排序)
- POJ 1007 DNA排序求逆序数
- POJ 1007 DNA排序求逆序数
- 九度OJ-1007:奥运排序问题
- 1007:DNA排序
- 九度OJ 题目1007:奥运排序问题
- poj 1007:DNA Sorting(水题,字符串逆序数排序)
- 算法之路之征服上海交大的oj-排序
- 南京邮电大学OJ——1062直接插入排序
- 九度1007:奥运排序问题
- 华为OJ训练之0002-161227-图片整理-快速排序
- DNA排序
- poj 1007 (nyoj 160) DNA Sorting