P1012 拼数 luogu

来源:互联网 发布:数据挖掘和数据分析 编辑:程序博客网 时间:2024/05/02 05:04

 

题目描述

设有n个正整数(n≤20),将它们联接成一排,组成一个最大的多位整数。

例如:n=3时,3个整数13,312,343联接成的最大整数为:34331213

又如:n=4时,4个整数7,13,4,246联接成的最大整数为:7424613

输入输出格式

输入格式:

第一行,一个正整数n。

第二行,n个正整数。

输出格式:

一个正整数,表示最大的整数

输入输出样例

输入样例#1:
313 312 343
输出样例#1:
34331213







解题思路: 利用字典序进行比较http://baike.baidu.com/link?url=rU39q5t0WDRucHON1nB4FcKgzgaTkzRzRi8uveJuZbOu-kx9UbePqSF6Fg9JL5oHbzA6NDwxiJRkwf_NeYVXV7w76KXnsxdKuJ5mWhzBBJbaNEb3P7AyhhzyGeWZliJn

这样还不够

例如:  123   和123321  两个数字在字典序上是相同的  所以我们有如下奇技淫巧:    两个字符串叠加一次 这样就不一样了  

123321123321   

123123


代码如下:

#include <iostream>#include <cstring>#include <algorithm>using namespace std;string a[20];bool cmp(string a,string b){a+=a;b+=b;return a>b;}int main(void){int n,i;cin>>n;for(i=0;i<n;i++) cin>>a[i];sort(a,a+n,cmp);for(i=0;i<n;i++)  cout<<a[i];}

附上AC图:

0 0