DNA排序的解题报告【C】 总时间限制: 1000ms 内存限制: 65536kB描述现在有一些长度相等的DNA串只由ACGT四个字母组成请将它们按照逆序对的数量多少排序。逆序对指的是字符串A中的两个字符A[i]、A[j]具有i j 且 A[i] A[j] 的性质。如字符串”ATCG“中T和C是一个逆序对T和G是另一个逆序对这个字符串的逆序对数为2。输入第1行两个整数n和mn(0n50)表示字符串长度m(0m100)表示字符串数量第2至m1行每行是一个长度为n的字符串输出按逆序对数从少到多输出字符串逆序对数一样多的字符串按照输入的顺序输出。样例输入10 6AACATGAAGGTTTTGGCCAATTTGGCCAAAGATCAGATTTCCCGGGGGGAATCGATGCAT样例输出CCCGGGGGGAAACATGAAGGGATCAGATTTATCGATGCATTTTTGGCCAATTTGGCCAAA#includestdio.h int main() { int m,n0; scanf(%d %d,n,m); char a[m][n1]; int b[m],c[m]; for(int i0;im;i) { b[i]0; c[i]0; } int cnt0; for(int i0;im;i) { scanf(%s,a[i]); } for(int i0;im;i) { for(int j0;jn;j) { for(int kj1;kn;k) { if(a[i][j]a[i][k]) { b[i]; } } } } for(int i0;im;i) { for(int j0;jm;j) { if(b[j]0) { continue; } else { for(int k0;km;k) { if(b[j]b[k]||b[k]0){ cnt1; }else{ cnt0; break; } } if(cnt) { c[i]j; b[j]-1; break; } } } } for(int h0;hm;h) { printf(%s\n,a[c[h]]); } return 0; }收获此题目锻炼了对字符串的输入和输出的应用同时在debug过程中也发现了很多问题都不同程度反应了作为一名萌新的不足。当然代码还有很多不简洁的地方。比如不知道怎么快速方便的排序同时存储字符串位置于是进行了挨个比较。对一个萌新来说还有很长的路要走。加油。ps其中对变量的命名并不规范以后会加以修改。简单说明a用来储存字符串b用来储存逆序对数c用来储存重新排序后字符串的号码。