2 条题解

  • 2

    要拼最大的数,就要把最大的放在最前面,小的放后面,所以排个序后输出即可。

    #include<bits/stdc++.h>
    using namespace std;
    bool cmp(string a,string b){
        return a+b>b+a;
    }
    int main(){
        int n;
        string a[30];
        cin>>n;
        for(int i=0;i<n;i++) cin>>a[i];
        sort(a,a+n,cmp);
        for(int i=0;i<n;i++) cout<<a[i];
        return 0;
    }
    
    • @ 2026-8-4 19:55:10

      可以的

  • 1
    @ 2026-8-3 21:14:26

    已经有人发题解了,我就稍微解释一下吧:

    1. 假设有两个字符串 string astring ba+b 可以表示将 ab 拼接后形成的字符串。
    2. 假设有两个字符串 string astring ba>b 可以表示 a 的字典序大于 ba<b 同理。

    AC Code:

    #include<bits/stdc++.h>
    using namespace std;
    string s[25];
    int n;
    bool cmp(string a,string b){
    	return a+b>b+a;
    }
    int main(){
    	cin>>n;
    	for(int i=1;i<=n;i++)
            cin>>s[i];
    	sort(s+1,s+n+1,cmp);
    	for(int i=1;i<=n;i++)
            cout<<s[i];
    }
    
    • 1

    [NOIP 1998 提高组] 拼数 【非官方数据】

    信息

    ID
    120
    时间
    1000ms
    内存
    256MiB
    难度
    3
    标签
    递交数
    4
    已通过
    3
    上传者