1. 程式人生 > >洛谷P1012拼數(string相加)(小技巧)

洛谷P1012拼數(string相加)(小技巧)

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>
using
namespace 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相加)(小技巧)