您的位置:首页 > 其它

poj1007 DNA Sorting 排序

2014-07-25 10:28 351 查看
题目链接:http://poj.org/problem?id=1007

思路:先对每一个DNA序列求逆序数,然后根据逆序数排序输出,水题

///2014.7.24
///poj1007

//Accepted  708K    47MS    G++ 835B    2014-07-25 10:29:02

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;

int n,m;
struct DNA{
int num;
char str[110];
};
bool cmp(DNA a,DNA b){
return a.num < b.num;
}

DNA dna[110];
int order[26];

int Inver(DNA &a){
a.num = 0;
for(int i=0 ; i<n-1 ; i++){
for(int j=i+1 ; j<n ; j++){
if( order[ a.str[j]-'A' ] < order[ a.str[i]-'A' ] )
a.num++;
}
}
return a.num;
}
int main(){
order['A'-'A'] = 0;
order['C'-'A'] = 1;
order['G'-'A'] = 2;
order['T'-'A'] = 3;

cin>>n>>m;
for(int i=0 ; i<m ; i++){
cin>>dna[i].str;
Inver(dna[i]);
}
sort(dna,dna+m,cmp);
for(int i=0 ; i<m ; i++){
cout<<dna[i].str<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: