名字很高大上,题目也太没诚意了吧!
数据有点弱,对排序完全不挑剔,随便写吧。
算法吗,求逆序数,排序,输出,编不下去了。
//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;
}