zoukankan      html  css  js  c++  java
  • Luogu 1012

    题目链接:https://www.luogu.org/problemnew/show/P1012

    题解:

    首先,同等长度的数字,用字典序的方法比较大小,和直接比较数字大小是一样的。

    其次,对于任意两个数字进行拼接,哪个放在前面哪个放在后面,直接用字符串拼接起来,比较一下两种情况哪个比较大就可以了。

    但是,暂时我还没想到怎么证明,在多个数字拼接时,两两比较拼接大小,再加上排序就可以得出正确答案……

    AC代码:

    #include<bits/stdc++.h>
    using namespace std;
    int n;
    vector<string> v;
    bool cmp(const string& a,const string& b) {
        return a+b>b+a;
    }
    int main()
    {
        cin>>n;
        string tp;
        while(n--) cin>>tp, v.push_back(tp);
        sort(v.begin(),v.end(),cmp);
        for(auto s:v) cout<<s;
    }

    今天想了还有另外一种比较方式,不太确定是不是对的,过到是能过:

    #include<bits/stdc++.h>
    using namespace std;
    int n;
    vector<string> v;
    bool cmp(const string& a,const string& b)
    {
        for(int p=0;;p++)
        {
            if(a[p%a.size()]==b[p%b.size()]) continue;
            else return a[p%a.size()]>b[p%b.size()];
        }
    }
    int main()
    {
        cin>>n;
        string tp;
        while(n--) cin>>tp, v.push_back(tp);
        sort(v.begin(),v.end(),cmp);
        for(auto s:v) cout<<s;
    }
  • 相关阅读:
    集合及特殊集合arrayList
    二维数组、多维数组
    一维数组

    for循坏的穷举与迭代,while、do while循环
    1.兔子生兔子问题2.打印菱形3.求100以内质数的和
    for循环嵌套
    复习题
    循环语句
    分支语句
  • 原文地址:https://www.cnblogs.com/dilthey/p/10527780.html
Copyright © 2011-2022 走看看