原题:HDU-1379
题目大意是给出n行m列DNA序列,输出以逆序数从小到大的顺序输出,且逆序数相同的序列按照输入顺序输出
其实就是一个按照逆序数的稳定排序
这个题目数据比较小,可以直接用两个循环求逆序数
然后用sort()排序就OK了
PS:sort是稳定的排序!
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
struct xulie {
char s[105];
int l;
} sequence[55];
int n,m;
int cmp(xulie a,xulie b) {
return a.l<b.l;
}
int main() {
int i,T;
scanf("%d",&T);
while(T--) {
scanf("%d %d\n",&m,&n);
for(i=0; i<n; i++)
gets(sequence[i].s);
int sum=0;
for(i=0; i<n; i++) {
sum=0;
for(int j=0; j<m; j++)
for(int r=0; r<j; r++)
if(sequence[i].s[r]>sequence[i].s[j])
sum++;
sequence[i].l=sum;
}
sort(sequence,sequence+n,cmp);
for(i=0; i<n; i++)
printf("%s\n",sequence[i].s);
}
return 0;
}