随手练——拼接最小字典序

Posted czc1999

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了随手练——拼接最小字典序相关的知识,希望对你有一定的参考价值。

没有找到OJ题目。

第一眼想到的一般都是按字典序从头到尾依次。

b,ba按这个思想排出来,是bba,但其实最小的是bab,就要改一下比较策略了,改成拼接之后,比较谁小。

int cmp(string s1,string s2) {
    return s1 + s2 < s2 + s1 ?  1 : 0;
}

 

完成代码:

#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;

int cmp(string s1,string s2) {
    return s1 + s2 < s2 + s1 ?  1 : 0;
}
int main() {
    vector<string>v;
    string s;
    while (getline(cin,s)) {
        if (s.empty())break;
        v.push_back(s);
    }
    sort(v.begin(), v.end(),cmp);
    for (int i = 0; i < v.size(); i++) {
        cout << v[i];
    }
}

 

以上是关于随手练——拼接最小字典序的主要内容,如果未能解决你的问题,请参考以下文章

拼接最小字典序

[PHP]算法-拼接最小字典序的实现

字符串练习题:拼接最小字典序

随手练——HUD 2609 How many

随手练——数独 HDU - 5547 坑!坑!坑!

[HDU2328]Corporate Identity(后缀数组)