题目直接暴力,但是考察了稳定排序和非稳定排序,使用sort直接WA了(不稳定排序),而使用stable_sort就过了(稳定排序)
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
using namespace std;
const int maxn = 1005;
int n;
struct node{
char str[ maxn ];
int val;
bool operator< ( const node &a )const{
return val < a.val;
}
}edge[ maxn ];
void Deal( int k ){
//cout << len << endl;
int sum = 0;
//cout << edge[ k ].str << endl;
//cout << n << endl;
for( int i = 0; i < n; ++i ){
for( int j = i + 1; j < n; ++j ){
if( edge[ k ].str[ i ] > edge[ k ].str[ j ] ){
sum++;
//cout << "aaaaaaaaaaaaaaaa" << endl;
}
}
}
edge[ k ].val = sum;
}
int main(){
int m;
while( scanf( "%d%d", &n, &m ) != EOF ){
for( int i = 0; i < m; ++i ){
for( int j = 0; j < n; ++j ){
cin >> edge[ i ].str[ j ];
}
//getchar();
edge[ i ].val = 0;
Deal( i );
//cout << edge[ i ].val << endl;
}
stable_sort( edge, edge + m );
for( int i = 0; i < m; ++i )
cout << edge[ i ].str << endl;
puts( "********************");
}
}