洛谷P1012拼數(string相加)(小技巧)
阿新 • • 發佈:2018-03-04
color font col 整數 比較 DC with 然而 cin
題目描述
設有n個正整數(n≤20),將它們聯接成一排,組成一個最大的多位整數。
例如:n=3時,3個整數13,312,343聯接成的最大整數為:34331213
又如:n=4時,4個整數7,13,4,246聯接成的最大整數為:7424613
輸入輸出格式
輸入格式:
第一行,一個正整數n。
第二行,n個正整數。
輸出格式:
一個正整數,表示最大的整數
題解
其實本來想用char一位位比較的...
然而忽然想起string好像可以直接相加(...)
例如
s1="abc"; s2="def"; s3=s1+s2; 則s3為abcdef
那麽這題就更簡單了...
代碼
#include<bits/stdc++.h> usingnamespace std; int n; string s[22]; bool cmp(string s1,string s2); int main() { ios::sync_with_stdio(false); cin>>n; for(int i=1;i<=n;i++) cin>>s[i]; sort(s+1,s+n+1,cmp); string ans; ans=s[1]; for(int i=2;i<=n;i++) ans+=s[i]; cout<<ans;return 0; } bool cmp(string s1,string s2) { return s1+s2>s2+s1; }
洛谷P1012拼數(string相加)(小技巧)