POJ 1007 DNA Sorting

名字很高大上,题目也太没诚意了吧!

数据有点弱,对排序完全不挑剔,随便写吧。

算法吗,求逆序数,排序,输出,编不下去了。

//PKU_1007
//弱鸡题,无分类

#include <iostream>
using namespace std;

int trans(char ch) {
	if (ch=='A')
		return 0;
	else if (ch=='C')
		return 1;
	else if (ch=='G')
		return 2;
	else if (ch=='T')
		return 3;
	return -1;
}

int main() {
	int ch_num[4];
	int i,j,k,n,m;
	int str_key[100];
	char str[100][50],ch;
	cin>>n>>m;
	getchar();
	for (i=0;i<m;i++){
		str_key[i]=0;
		for (j=0;j<4;j++)
			ch_num[j]=0;
		for (j=0;j<n;j++){
			str[i][j]=getchar();
			k=trans(str[i][j]);
			ch_num[k]++;
			for (k=k+1;k<4;k++)
				str_key[i]+=ch_num[k];
		}
		getchar();
	}


	int s[100];
	for (i=0;i<m;i++)
		s[i]=i;
	for (i=0;i<m;i++){
		j=i;
		while (str_key[s[j]]<str_key[s[j-1]] && j>0){
			k=s[j];
			s[j]=s[j-1];
			s[j-1]=k;
			j--;
		}
	}

	for (i=0;i<m;i++) {
		for (j=0;j<n;j++)
			cout<<str[s[i]][j];
		cout<<endl;
	}
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值