使用sort()函数排序,sort(result_vec.begin(),result_vec.end(),Cmp()),自定义Cmp()的排序规则。
用vector来存储字符串序列和对应的顺序的数值。
本来想用map存储的,但是map的key唯一和自动排序会出问题。
用vector来存储字符串序列和对应的顺序的数值。
本来想用map存储的,但是map的key唯一和自动排序会出问题。
#include<iostream>
#include <algorithm>
#include<map>
#include<string>
#include<vector>
using namespace std;
typedef pair<string, int> PAIR;
struct Cmp{
int operator()(const PAIR& x,const PAIR& y){
int res;
if( x.second==y.second){
res = 0;
}
else{
res = x.second<y.second;
}
return res;
}
};
int main(){
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
int m,n;
cin>>m;
cin>>n;
char * cdata;
string data[51];
int flag[51]={0};
// map<string,int> result;
vector<PAIR> result_vec;
for(int i=0;i<n;i++){
cin>>data[i];
for(int j=0;j<m;j++){
for(int k=j+1;k<m;k++){
if((int)data[i].at(j) > (int)data[i].at(k))
{
flag[i]++;
}
}
}
// result.insert(map<string,int>::value_type(data[i],flag[i]));
result_vec.push_back(make_pair(data[i],flag[i]));
}
//排序
// vector<PAIR> result_vec;
// map<string,int>::iterator it;
// for(it=result.begin();it!=result.end();++it){
// result_vec.push_back(make_pair(it->first,it->second));
// }
sort(result_vec.begin(),result_vec.end(),Cmp());
vector<PAIR>::iterator itv;
for(itv=result_vec.begin();itv!=result_vec.end();++itv){
cout<< (*itv).first <<endl;
}
// map<string,int>::iterator it;
// for(it=result.begin();it!=result.end();++it){
// cout<< (*it).first <<" "<< (*it).second <<endl ;
// }
return 0;
}