zoj 1188.DNA Sorting

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;
}



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值