DNA排序

  题目大意:给定多个ACGT序列,按照字母顺序算出逆序数,按逆序数从小到大排列

  这题其实很简单,我们只要用一个归并排序算逆序数,然后快排就可以了(插入排序也可以,数据量不大),但是要注意的是他要保持原来的顺序,fcmop那里要写当a.inverse=b.inverse时,返回0

  

 #include <iostream>
#include <functional>
#include <algorithm> using namespace std;
typedef int Position;
typedef struct _set
{
char input[];
int inverse;
}Set; void Merge_Sort(Position, Position, int *const);
void Merge(Position, Position, int *const); static Set input[];
static char A[], Tmp_Array[]; int fcomp(const void *a, const void *b)
{
if ((*(Set *)a).inverse - (*(Set *)b).inverse == )
return ;
return (*(Set *)a).inverse - (*(Set *)b).inverse;
} int main(void)
{
int line_sum, length, inverse_num; while (~scanf("%d%d", &length, &line_sum))
{
getchar();
for (int i = ; i < line_sum; i++)
{
scanf("%s", input[i].input);
strcpy(A, input[i].input);
inverse_num = ;
Merge_Sort(, length - , &inverse_num);
input[i].inverse = inverse_num;
}
qsort(input, line_sum, sizeof(Set), fcomp);
for (int i = ; i < line_sum; i++)
printf("%s\n", input[i].input);
}
return ;
} void Merge_Sort(Position Left, Position Right, int *const Inverse_Num)
{
if (Left < Right)
{
Position Mid = (Left + Right) / ;
Merge_Sort(Left, Mid, Inverse_Num);
Merge_Sort(Mid + , Right, Inverse_Num);
Merge(Left, Right, Inverse_Num);
}
} void Merge(Position Left, Position Right, int *const Inverse_Num)
{
Position Mid = (Left + Right) / , lpos = Left, rpos = Mid + , pos = Left; for (; lpos <= Mid && rpos <= Right;)
{
if (A[lpos] <= A[rpos])
Tmp_Array[pos++] = A[lpos++];
else
{
Tmp_Array[pos++] = A[rpos++];
(*Inverse_Num) += (Mid + - lpos);
}
}
while (lpos <= Mid)
Tmp_Array[pos++] = A[lpos++];
while (rpos <= Right)
Tmp_Array[pos++] = A[rpos++];
for (int i = Left; i <= Right; i++)
A[i] = Tmp_Array[i];
}

Mathematics:DNA Sorting(POJ 1007)的更多相关文章

  1. DNA Sorting POJ - 1007

    DNA Sorting Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 114211   Accepted: 45704 De ...

  2. [POJ 1007] DNA Sorting C++解题

        DNA Sorting Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 77786   Accepted: 31201 ...

  3. poj 1007:DNA Sorting(水题,字符串逆序数排序)

    DNA Sorting Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 80832   Accepted: 32533 Des ...

  4. poj 1007 (nyoj 160) DNA Sorting

    点击打开链接 DNA Sorting Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 75164   Accepted: 30 ...

  5. [POJ] #1007# DNA Sorting : 桶排序

    一. 题目 DNA Sorting Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 95052   Accepted: 382 ...

  6. poj 1007 DNA Sorting

    DNA Sorting Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 95437   Accepted: 38399 Des ...

  7. poj 1007 DNA sorting (qsort)

    DNA Sorting Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 95209   Accepted: 38311 Des ...

  8. DNA Sorting 分类: POJ 2015-06-23 20:24 9人阅读 评论(0) 收藏

    DNA Sorting Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 88690 Accepted: 35644 Descrip ...

  9. 算法:POJ1007 DNA sorting

    这题比较简单,重点应该在如何减少循环次数. package practice; import java.io.BufferedInputStream; import java.util.Map; im ...

随机推荐

  1. [整理]Android开发(一)环境安装

    所有相关下载均可通过http://www.androiddevtools.cn/下载 安装JAVA JDK 下载Windows x64 180.44 MB jdk-8u45-windows-x64.e ...

  2. 微信电脑版真的要来了 微信Windows版客户端1.0 Alpha推出

    微信电脑版的搜索量一直很大,但只有网页版,之前也写了微信网页版APP - 网页微信客户端电脑版体验,在键盘上打字的感觉就是快.现在微信Windows版客户端1.0 Alpha推出了,来一睹芳容吧(20 ...

  3. IBM B16光纤交换机ZOON划分方法

      一.ZOON的含义及划分原则     Zoon在光纤存储交换机中的功能类似于以太网交换机VLAN的作用,主要是为了在一台交换机划分出多个逻辑区,用于防范不同应用的存储连接发起广播包,提高光纤交换机 ...

  4. Two Strings Are Anagrams

    Write a method anagram(s,t) to decide if two strings are anagrams or not. 判断两个字符串里的字符是否相同,也就是是否能够通过改 ...

  5. [codeforces 339]C. Xenia and Weights

    [codeforces 339]C. Xenia and Weights 试题描述 Xenia has a set of weights and pan scales. Each weight has ...

  6. iOS 简单音乐播放器 界面搭建

    如图搭建一个音乐播放器界面,具备以下几个简单功能: 1,界面协调,整洁. 2,点击播放,控制进度条. 3.三收藏歌曲,点击收藏,心形收藏标志颜色加深. 4,左右按钮,切换歌曲图片和标题. 5,点击中间 ...

  7. 多通道(Multichannel)单通道(singlechannel)图像概念梳理

    在做机器视觉时,常常要将一个多通道图像分离成几个单通道图像或者将几个单通道图像合成一个多通道图像,以方便图像处理,但是.写这篇博客,是为加深对这两个概念的理解,下面会给出部分OpenCV对单通道与多通 ...

  8. Android的一种MVP模式框架

    今天给大家分享的是一种将view的初始化和逻辑与activity分离的架构,采用的是mvp模式.但令人遗憾的是,这仅仅是一个新的思路,我在实际使用中发现其并不能完全将UI逻辑与activity分开,所 ...

  9. HTTP协议概念篇

    1.概念 协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器. ...

  10. 3.3---集合栈(CC150)

    思路:注意一下别写错add还是remove public class SetOfStacks { public static ArrayList<ArrayList<Integer> ...