zoukankan      html  css  js  c++  java
  • Educational Codeforces Round 9 C. The Smallest String Concatenation(字符串排序)

    You're given a list of n strings a1, a2, ..., an. You'd like to concatenate them together in some order such that the resulting string would be lexicographically smallest.

    Given the list of strings, output the lexicographically smallest concatenation.

    Input

    The first line contains integer n — the number of strings (1 ≤ n ≤ 5·104).

    Each of the next n lines contains one string ai (1 ≤ |ai| ≤ 50) consisting of only lowercase English letters. The sum of string lengths will not exceed 5·104.

    Output

    Print the only string a — the lexicographically smallest string concatenation.

    Examples
    input
    4
    abba
    abacaba
    bcd
    er
    
    output
    abacabaabbabcder
    
    input
    5
    x
    xx
    xxa
    xxaa
    xxaaa
    
    output
    xxaaaxxaaxxaxxx
    
    input
    3
    c
    cb
    cba
    
    output
    cbacbc
    题意:给你n个字符串,串的长度可能不同,让你把这些串连起来使得最后的字典序最小。

    思路:一开始的想法是把字符串补齐,然后排个序,但是wa了。看了q神的解法,发现就是在排序的时候用字符串a+b<b+a进行排序,太亮了这方法。

    #include<iostream>
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #include<math.h>
    #include<vector>
    #include<map>
    #include<set>
    #include<queue>
    #include<stack>
    #include<string>
    #include<algorithm>
    #define inf 99999999
    #define pi acos(-1.0)
    #define maxn 50050
    #define MOD 1000000007
    using namespace std;
    typedef long long ll;
    typedef long double ldb;
    
    struct node{
        char s[60];
    }a[maxn];
    bool cmp(node a,node b){
        char s1[120],s2[120];
        char s3[120],s4[120];
        strcpy(s1,a.s);
        strcpy(s2,b.s);
        strcpy(s3,b.s);
        strcpy(s4,a.s);
        strcat(s1,s2);
        strcat(s3,s4);
        return strcmp(s1,s3)<0;
    
    }
    int main()
    {
        int n,m,i,j;
        while(scanf("%d",&n)!=EOF)
        {
            for(i=1;i<=n;i++){
                scanf("%s",a[i].s);
            }
            sort(a+1,a+1+n,cmp);
            for(i=1;i<=n;i++){
                cout<<a[i].s;
            }
            cout<<endl;
        }
        return 0;
    }
    


  • 相关阅读:
    phalcon——HTTP 请求
    phalcon——闪存消息
    phalcon——验证
    Java 字符串分隔 split
    Eclipse "R cannot be resolved"问题
    Android CountDownTimer 类实现倒计时
    Eclipse 打开时“发现了以元素'd:skin'”开头的无效内容。此处不应含有子元素
    Android Studio 设置/更改 SDK 路径
    Android 开发使用自定义字体
    Android Studio "ADB not responding"
  • 原文地址:https://www.cnblogs.com/herumw/p/9464537.html
Copyright © 2011-2022 走看看