題目:https://www.luogu.org/problemnew/show/P1012 今天真是長了見識。這道題做了十幾分鐘,用模擬愣是調不出來。直到我看了題解——(當場去世)…… 題的意思是n個數拼出一個最大的數,我竟真的傻傻的輸進n個數。。。。。 用string 輕鬆解決!!! 用sort ...
題目:https://www.luogu.org/problemnew/show/P1012
今天真是長了見識。這道題做了十幾分鐘,用模擬愣是調不出來。直到我看了題解——(當場去世)……
題的意思是n個數拼出一個最大的數,我竟真的傻傻的輸進n個數。。。。。
用string 輕鬆解決!!!
用sort排列,然後直接從1到n輸出,秒AC.....
關鍵是關於string的加法性質:ac+cd=abcd;
所以把cmp寫一下就好了;
上代碼,一看全明白!!!
#include<iostream> #include<cstring> #include<cstdio> #include<string> #include<algorithm> using namespace std; int n; string a[50]; bool cmp(string x,string y) { return x+y>y+x; } int main() { scanf("%d",&n); for(int i=1;i<=n;i++) { cin>>a[i]; } sort(a+1,a+n+1,cmp); for(int i=1;i<=n;i++) { cout<<a[i]; } return 0; }