DNA Sorting POJ - 1007
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 114211 | Accepted: 45704 |
Description
You are responsible for cataloguing a sequence of DNA strings
(sequences containing only the four letters A, C, G, and T). However,
you want to catalog them, not in alphabetical order, but rather in order
of ``sortedness'', from ``most sorted'' to ``least sorted''. All the
strings are of the same length.
Input
first line contains two integers: a positive integer n (0 < n <=
50) giving the length of the strings; and a positive integer m (0 < m
<= 100) giving the number of strings. These are followed by m lines,
each containing a string of length n.
Output
the list of input strings, arranged from ``most sorted'' to ``least
sorted''. Since two strings can be equally sorted, then output them
according to the orginal order.
Sample Input
10 6
AACATGAAGG
TTTTGGCCAA
TTTGGCCAAA
GATCAGATTT
CCCGGGGGGA
ATCGATGCAT
Sample Output
CCCGGGGGGA
AACATGAAGG
GATCAGATTT
ATCGATGCAT
TTTTGGCCAA
TTTGGCCAAA
Source
poj-1007
author:
Caution_X
date of submission:
20191010
tags:
水题
description modelling:
1.输入若干个字符串,按“有序”到“无序”顺序输出(这些串只含有A,C,G,T)
2.有序的定义为该串的逆序数,若逆序数相同,则按原来的顺序输出
major steps to solve it:
1.记录所在串各个字母的个数
2.遍历整个串,每次遍历到当前字母时加上与该字母逆序的字母的个数,然后该串中此字母个数-1
3.sort排序后输出
warnings:
1.注意审题,逆序数相同时按照原来的顺序输出
AC Code:
#include<iostream>
#include<cstdio>
#include<map>
#include<algorithm>
using namespace std;
char a[][];
map<char,int> Num[];
struct ANS{
int d,p;
}ans[];
int d[];
bool cmp(ANS a,ANS b)
{
if(a.d!=b.d) return a.d<b.d;
else return a.p<b.p;
}
int main()
{
//freopen("input.txt","r",stdin);
int n,m;
cin>>n>>m;
for(int i=;i<m;i++) {
ans[i].p=i;
for(int j=;j<n;j++) {
cin>>a[i][j];
Num[i][a[i][j]]++;
}
}
for(int i=;i<m;i++) {
ans[i].d=;
for(int j=;j<n;j++) {
if(a[i][j]=='A') {
Num[i]['A']--;
}
else if(a[i][j]=='C') {
ans[i].d=ans[i].d+Num[i]['A'];
Num[i]['C']--;
}
else if(a[i][j]=='G') {
ans[i].d=ans[i].d+Num[i]['A']+Num[i]['C'];
Num[i]['G']--;
}
else if(a[i][j]=='T') {
ans[i].d=ans[i].d+Num[i]['C']+Num[i]['G']+Num[i]['A'];
Num[i]['T']--;
}
}
}
sort(ans,ans+m,cmp);
for(int i=;i<m;i++) {
for(int j=;j<n;j++) {
cout<<a[ans[i].p][j];
}
cout<<endl;
}
return ;
}
DNA Sorting POJ - 1007的更多相关文章
- Mathematics:DNA Sorting(POJ 1007)
DNA排序 题目大意:给定多个ACGT序列,按照字母顺序算出逆序数,按逆序数从小到大排列 这题其实很简单,我们只要用一个归并排序算逆序数,然后快排就可以了(插入排序也可以,数据量不大),但是要注意的是 ...
- [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 ...
随机推荐
- 为何我建议1-3年的Java程序员仔细看看这篇文章
此文的目的是为了督促自己去不断学习,让自己有更明确的方向去提升自己.以技能树为基础,以面试要点为大纲,我觉得比抓住什么看什么要更有目的,更能坚持下去.世界瞬息万变,我们要时刻准备着.时刻提高着自己,才 ...
- CRF keras代码实现
这份代码来自于苏剑林 # -*- coding:utf-8 -*- from keras.layers import Layer import keras.backend as K class CRF ...
- 重磅来袭!Reactive 架构专场四城巡回演讲
Reactive 究竟是什么?Reactive 对架构设计的影响和冲击,以及给开发方式带来的改变有哪些?为什么阿里巴巴.Pivotal.Facebook 纷纷在生产环境中实践 Reactive? 本次 ...
- java 接口中的成员变量与方法
java接口中变量的默认修饰符为 public static final int i = 3; 相当于 public static final int i = 3; java接口中方法的默认修饰符为 ...
- 【CF1053E】Euler tour
[CF1053E]Euler tour 题面 CF 洛谷 大概意思是你有一棵树,然而你并不知道这棵树是啥.给你一个确定了一些位置的欧拉序(就是\(ST\)表求\(LCA\)的那个序列),问你是否存在一 ...
- 数据库——SQL-SERVER练习(6) 数据库安全性
一.实验准备 (1)运行SQL-SERVER服务管理器, 启动服务(2)运行查询分析器, 以DBA身份登录数据库服务器: 用户名sa, 密码123456(3)打开CREATE-TABLE ...
- 二叉查找树的实现与讲解(C++)
注:这篇文章源于:https://mp.csdn.net/postedit/99710904, 无需怀疑抄袭,同一个作者,这是我在博客园的账号. 在二叉树中,有两种非常重要的条件,分别是两类数据结构的 ...
- Python 最强 IDE 详细使用指南!-PyCharm
PyCharm 是一种 Python IDE,可以帮助程序员节约时间,提高生产效率.那么具体如何使用呢?本文从 PyCharm 安装到插件.外部工具.专业版功能等进行了一一介绍,希望能够帮助到大家. ...
- Python爬虫动态User-Agent
下载库fake_useragent 然后就可以随心所欲的使用不同UA了
- ES6复制拷贝数组,对象,json数组
扩展运算符的应用spread打散数组[...] (1)复制数组 数组是复合的数据类型,直接复制的话,只是复制了指向底层数据结构的指针,而不是克隆一个全新的数组. const a1 = [1, 2]; ...