洛谷 P1012 拼数 1998提高组
2017-06-22 16:34
435 查看
1. Problem Description–
设有n个正整数(n≤20),将它们联接成一排,组成一个最大的多位整数。例如:n=3时,3个整数13,312,343联接成的最大整数为:34331213
又如:n=4时,4个整数7,13,4,246联接成的最大整数为:7424613
2. Input
第一行,一个正整数n。第二行,n个正整数。
3. Output
一个正整数,表示最大的整数输入样例#1:
3
13 312 343
输出样例#1:
34331213
4. 详解
#include <iostream> #include <cstdio> #include <cstring> using namespace std; const int M=30; int n; string a[M]; void init(){ cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; //cout<<a[i]<<endl; } } bool comp(string x,string y){ if(x+y>y+x)return 1; else return 0; } void qsort(int l,int r){ int i=l,j=r; string mid=a[(i+j)/2],t; while(i<=j){ while(comp(a[i],mid))i++; while(comp(mid,a[j]))j--; if(i<=j){ t=a[i];a[i]=a[j];a[j]=t; // for(int i1=1;i1<=n;i1++)cout<<a[i1]<<" "; // cout<<endl; i++;j--; } } if(i<r)qsort(i,r); if(l<j)qsort(l,j); } bool ok(int x,int y){ int x1=a .length(),y1=a[n-1].length(); for(int i=0;i<min(x1,y1);i++){ if(a[x][i]!=a[y][i])return 0; } return 1; } int main(){ freopen("P1012拼数.in","r",stdin); string t; init(); qsort(1,n); for(int i=1;i<=n;i++)cout<<a[i]; fclose(stdin); return 0; }
相关文章推荐
- [NOIP1998] 提高组 洛谷P1012 拼数
- [NOIP1998] 提高组 洛谷P1013 进制位
- [NOIP1998] 提高组 洛谷P1011 车站
- NOIP 提高组 初赛 四、阅读程序写结果 习题集(一)NOIP1998-NOIP1999
- 对洛谷“提高试炼场-其他数学问题”的爆破
- 洛谷 P1801 [NOI导刊2010提高(06)] 黑匣子
- 美好的每一天(洛谷2017春节联欢赛 Hello Dingyou)(提高组)
- [NOIP2002] 提高组 洛谷P1033 自由落体
- 洛谷P1771 方程的解_NOI导刊2010提高(01)
- 洛谷P1083 [NOIP2012提高组Day2T2]借教室
- [NOIP2007] 提高组 洛谷P1097 统计数字
- Noip1998 提高组3 卢斯加法表
- NOIP1998提高组 车站
- 洛谷 P1845 影像之结构化特征_NOI导刊2011提高(12)
- 【前缀和】【前缀MAX】洛谷 P1351 NOIP2014提高组 day1 T2 联合权值
- 洛谷10月月赛R1·浴谷八连测R1·提高组 SAC E#1 -T1 一道中档题 Factorial
- 洛谷 P1012 拼数
- 洛谷1807 最长路 NOI导刊2010提高(07)
- 洛谷1801 黑匣子_NOI导刊2010提高(06) 【好题】
- [NOIP2000] 提高组 洛谷P1019 单词接龙