Mathematics:DNA Sorting(POJ 1007)
题目大意:给定多个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)的更多相关文章
- DNA Sorting POJ - 1007
DNA Sorting Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 114211 Accepted: 45704 De ...
- [POJ 1007] DNA Sorting C++解题
DNA Sorting Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 77786 Accepted: 31201 ...
- poj 1007:DNA Sorting(水题,字符串逆序数排序)
DNA Sorting Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 80832 Accepted: 32533 Des ...
- poj 1007 (nyoj 160) DNA Sorting
点击打开链接 DNA Sorting Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 75164 Accepted: 30 ...
- [POJ] #1007# DNA Sorting : 桶排序
一. 题目 DNA Sorting Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 95052 Accepted: 382 ...
- poj 1007 DNA Sorting
DNA Sorting Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 95437 Accepted: 38399 Des ...
- poj 1007 DNA sorting (qsort)
DNA Sorting Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 95209 Accepted: 38311 Des ...
- DNA Sorting 分类: POJ 2015-06-23 20:24 9人阅读 评论(0) 收藏
DNA Sorting Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 88690 Accepted: 35644 Descrip ...
- 算法:POJ1007 DNA sorting
这题比较简单,重点应该在如何减少循环次数. package practice; import java.io.BufferedInputStream; import java.util.Map; im ...
随机推荐
- 关于在windows上的wamp集成环境和xampp上安装mongo扩展
今天来学习下mongodb,在装PHP扩展的时候本来是一个很轻松的事情,结果并不是我想想的那么简单. 我的集成环境是xampp的php版本是5.6的x86.我开启了安全模式,所以我需要mongo时ts ...
- 扁平化设计五大原则(转自CSDN翻译)
Cousins表示他虽然对扁平化设计的感觉非常强烈,但并没有特别热爱或者特别讨厌扁平化设计.他认为好的设计不应当局限于某种设计风格,而需要更注重可用性.有用性.如果因为时尚的缘故,那就顺其自然吧.但该 ...
- mysql 表锁问题
select * from information_schema.INNODB_lock_waits; select * from information_schema.INNODB_locks; S ...
- java web上传下载乱码问题解决方法
文件下载中文乱码,因为http请求url和header要求只能通过ascii码,对于其他字符则不行,需要转码.而不同浏览器的处理方式右不一样. 解决方法一: /** * 乱码解决 * @throws ...
- 【bzoj4027】[HEOI2015]兔子与樱花
题目描述 很久很久之前,森林里住着一群兔子.有一天,兔子们突然决定要去看樱花.兔子们所在森林里的樱花树很特殊.樱花树由n个树枝分叉点组成,编号从0到n-1,这n个分叉点由n-1个树枝连接,我们可以把它 ...
- COM中的REFIID小解【转】
是在浏览器项目中的IDispatch调用QueryInterface( [in] REFIID riid, [out] void **ppvObject); 认识的REFIID,由于看声明说r ...
- Entity Framework Code First数据库自动更新2
以前做项目的时候,没有采用分类库的形式,所以迁移一致非常顺利,没有出现过任何状况. 这次做项目稍微有点大,必须要分类库才方便开发维护. 在解决方案中启用项目EntityFramework迁移时却发生了 ...
- 淘宝(阿里百川)手机客户端开发日记第十篇 阿里百川服务器环境介绍之API文档的快速链接(四)
个人感觉比较重要的快速链接: http://open.taobao.com/doc/detail.htm?id=102513 http://open.taobao.com/doc/detail.htm ...
- Linux之编译需要的文件变化时刻
- hiho #1325 : 平衡树·Treap
#1325 : 平衡树·Treap 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho:小Hi,我发现我们以前讲过的两个数据结构特别相似. 小Hi:你说的是哪两个啊? ...