输入K个正整数,将它们拼接在一起,找出其中最大的那个拼接数。例如输入:3 31 3 331,输出:333131是所有拼接方案中最大的。
#include<bits/stdc++.h>
using namespace std;//最大数,输入k个正整数,将他们拼凑在一起,找出其中最大的那个拼凑数//例如输入 3 31 3 331,输出:333131是所有拼接方案中最大的string a[1000];bool cmp(string s1,string s2){ int n1=s1.length(); int n2=s2.length(); int maxLen=n1>n2?n1:n2; for(int i=0;i<2*maxLen;i++) //重复后缀的情况比如887 8878878 重复比较 { if(s1[i%n1]<s2[i%n2]) return 0; if(s1[i%n1]>s2[i%n2]) return 1; }}int main(){ int k; cin>>k; for(int i=0;i<k;i++) { cin>>a[i]; } sort(a,a+k,cmp); for(int i=0;i<k;i++) { cout<<a[i]<<" "; } return 0;}