描述

现在有一些长度相等的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

解题思路:

# include<stdio.h>
# include<string.h>
# include<algorithm>
using namespace std;
struct E
{
char s[51];
int cnt;
bool operator < (const E &b) const
{
return cnt<b.cnt;
}
}dn[101]; int main()
{
int n,m;
int index=0,i,j,k;
while(scanf("%d%d",&n,&m)!=EOF)
{
for(k=0;k<m;k++)
{
scanf("%s",dn[k].s);
int len=strlen(dn[k].s),cnt=0;
for(i=0;i<len;i++)
{
for(j=i+1;j<len;j++)
{
if(dn[k].s[i]>dn[k].s[j])
cnt++;
}
}
dn[k].cnt=cnt;
} sort(dn,dn+m); for(i=0;i<m;i++)
printf("%s\n",dn[i].s);
} return 0;
}

最新文章

  1. modprobe和lsmod命令配合使用
  2. npm run-script
  3. unix network programming volume1 sorce code build and get(UNIX網絡編程卷1第三版)
  4. Dom实例:数据自增、搜索框及跑马灯
  5. Netty高并发原理
  6. Socket programming in C on Linux | tutorial
  7. java 死锁及解决
  8. [Effective C++ --027]尽量少做转型动作
  9. Android之路-------浅淡Android历史、系统架构与开发特色
  10. LeetCode OJ平台上Maximum Subarray题目O(n)复杂度解决方式
  11. 读书笔记一 Java程序员的基本修养(数组及其内存管理)
  12. 一键下载你的youtube视频
  13. pyrhon多进程操作初探
  14. 【leetcode】461. Hamming Distance
  15. javascript中的map和reduce
  16. mongoDB与mongoose
  17. 关于input type=file上传图片的总结
  18. Git 提交的正确姿势:Commit message 编写指南
  19. Android动画知识汇总
  20. Android Library和Android APP、Java Library的区别

热门文章

  1. 下载hotspot源码
  2. zookeeper集群&amp;伪集群模式部署
  3. 面试 11-00.JavaScript高级面试
  4. Helm 带你飞
  5. 第三章 Nacos Discovery--服务治理
  6. 流程控制之☞ while 和 for 的故事
  7. RHCSA 复习
  8. C盘满了删除C盘文件
  9. 一道java算法题
  10. SM4