poj1007
1**.链接地址**
https://vjudge.net/problem/POJ-1007
2**.问题描述**
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.
输入样例
10 6
AACATGAAGG
TTTTGGCCAA
TTTGGCCAAA
GATCAGATTT
CCCGGGGGGA
ATCGATGCAT
输出样例
CCCGGGGGGA
AACATGAAGG
GATCAGATTT
ATCGATGCAT
TTTTGGCCAA
TTTGGCCAAA
3**.解题思路**
对每个序列求其中逆序数然后排序即可
4**.算法实现源代码**
#include <iostream>
#include <algorithm>
using namespace std;
struct Str
{
char s[51];
int n;
};
bool cmp(const Str &a,const Str &b)
{
if(a.n<b.n)
return 1;
return 0;
}
int main()
{
int n,m,i,j;
Str str[101];
while(cin>>n>>m)
{
for(i=1;i<=m;i++)
cin>>str[i].s;
for(i=1;i<=m;i++)
{
int num=0;
int A=0,C=0,G=0;
for(j=n-1;j>=0;j--)
{
switch(str[i].s[j])
{
case 'A':A++;break;
case 'C':C++;num+=A;break;
case 'G':G++;num+=A;num+=C;break;
case 'T':num+=A;num+=C;num+=G;break;
default:break;
}
}
str[i].n = num;
}
sort(str+1,str+m+1,cmp);
for(i=1;i<=m;i++)
cout<<str[i].s<<endl;
}
return 0;
}
转载于//www.cnblogs.com/KasenBob/p/11217496.html
还没有评论,来说两句吧...