题意
题目比较简单,就是求符串的逆序数,并从小到大输出,并且不改变相对顺序(相同逆序数的字符串位置不能改变)。
分析
可以利用STL中multimap的特性,代码如下:
Memory: 256K Time: 0MS Length:34LINES
#include<iostream>
#include<map>
#include<string>
using namespace std;
int calculate(const string & s)
{
int cnt = 0;
for (int i = int(s.size() - 2); i >= 0; --i)
for (string::size_type j = i; j != s.size() - 1; ++j)
if (s[i] > s[j + 1])
++cnt;
return cnt;
};
int main()
{
multimap<int, string> Mapping;
int count = 0;
int length = 0;
cin >> length >> count;
string DNA;
while (count > 0)
{
cin >> DNA;
Mapping.insert(make_pair(calculate(DNA), DNA));
--count;
}
multimap<int, string>::iterator iter = Mapping.begin();
while (iter != Mapping.end())
{
cout << iter->second << endl;
++iter;
}
return 0;
}