您的位置:首页 > 其它

zoj 1188.DNA Sorting

2012-10-15 22:58 260 查看
DNA Sorting

#include<iostream>
#include<cstdlib>
using namespace std;
struct node{
int num;
char a[51];
}data[101];

int cal(char* s,int n)
{
int i=0;
int a[4]={0},total=0;
for(i=n-1;i>=0;i--)
{
switch(s[i])
{
case 'A':
a[1]++;
a[2]++;
a[3]++;
break;
case 'C':
a[2]++;
a[3]++;
total+=a[1];
break;
case 'G':
a[3]++;
total+=a[2];
break;
case 'T':
total+=a[3];
break;
}
}
return total;
}
int comp(const void* a,const void* b)
{
return (*(node *)a).num-(*(node *)b).num;
}
int main()
{
int n,m;
int t;
cin>>t;
while(t)
{
cin>>n>>m;
for(int i=0;i<m;i++)
{
cin>>data[i].a;
data[i].num=cal(data[i].a,n);
}
qsort(data,m,sizeof(node),comp);
for(int j=0;j<m;j++)
cout<<data[j].a<<endl;
}
return 0;
}
#include <iostream>
#include <cstdio>
#include <string>
#include <algorithm>
using namespace std;
struct dna
{
string s;
int value;
}d[110];

void inint()
{
int i;
for( i=0;i<110;i++ )
d[i].value=0;
}

bool cmp( dna a,dna b )
{
return a.value<b.value;
}

int main()
{
int N,n,m,i,j,k,sum,first;
first=1;
cin>>N;
while( N-- )
{
inint();
cin>>n>>m;
for( i=0;i<m;i++ )
{
cin>>d[i].s;
for( j=1;j<n;j++ )
{
for( k=j-1;k>=0;k-- )
{
if( d[i].s[j]<d[i].s[k] )
d[i].value++;
}
}
}
sort( d,d+m,cmp );
if( first!=1 )  cout<<endl;
for( i=0;i<m;i++ )
cout<<d[i].s<<endl;
first++;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: