题目:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=68990#problem/A

题目需求:,给n个数字,将它们重新排序得到一个最大的数字,好像给出123 456 789 拼为 789456123 最大

这题可以算是一个排序题,不过排序的规则有讲究

如果想用字典序排序,显然错了,好像999123 999 , 按字典序排序999123在前面,得到的数字为999123999 , 显然没有不够999999123 大

题目解析:冒泡排序,首先先按字典序排序,这样可以使冒泡排序的交换次数大大减小。

如果有两个数90 9,如果按字典序排序则90>9,此时比较strcat(“90”,“9”)与(“9”,”90“)的大小,使大的与小的位置交换。具体操作请看代码,一看就会明白什么意思的。

#include <iostream>
#include <string.h>
#include <stdio.h>
#include <algorithm>
#include <math.h>
#include <queue>
#define eps 1e-9
typedef long long ll;
using namespace std;
int n;
char str[];
char a[][];
char s2[],s3[];
int cmp(const void *a,const void *b)
{
return strcmp((char *)b,(char *)a);
}
int main()
{
while(scanf("%d",&n)!=EOF&&n!=)
{
for(int i=;i<n;i++)
scanf("%s",a[i]);
qsort(a,n,sizeof(a[]),cmp);
for(int i=;i<n;i++)
{
for(int j=;j<n-i;j++)
{
strcpy(s2,a[j+]);
strcat(s2,a[j]);
strcpy(s3,a[j]);
strcat(s3,a[j+]);
if(strcmp(s2,s3)>)
{
strcpy(str,a[j]);
strcpy(a[j],a[j+]);
strcpy(a[j+],str);
//printf("%s %s\n",a[j],a[j+1]);
}
}
}
for(int i=;i<n;i++)
{
printf("%s",a[i]);
}
cout<<endl;
}
return ;
}

最新文章

  1. [C1] 实现 C1FlexGrid 撤销还原功能
  2. input的placeholder文字颜色修改
  3. SharePoint 2010中重置windows 活动目录(AD)域用户密码的WebPart(免费下载)
  4. JavasScript判断输入框不为空
  5. 如何实现wpf的多国语言
  6. 非阻塞,send后马上close消息能成功发出去吗
  7. Android ViewPager实现软件的第一次加载的滑动效果
  8. SQL Server 文件自动增长那些事
  9. C在宏定义中使用的语言可变参数
  10. WebApi接口传参不再困惑:传参详解
  11. 浩哥解析MyBatis源码(一)——执行流程
  12. 团队作业8——第二次项目冲刺(Beta阶段)第三天
  13. Git 中 SSH key 生成步骤
  14. zk日常运维管理
  15. View的绘制流程
  16. JVM调优之Tomcat启动加速(二)
  17. (网页)sweetalert api 中文开发文档和手册,项目放弃alert
  18. pandas 将excel一列拆分成多列重新保存
  19. Scrum Meeting NO.6
  20. react和vue的异同点

热门文章

  1. cs108 03 ( 调试, java通用性)
  2. EasyUI 异步Tree
  3. 从此sudo不再输密码
  4. VMware ESXi 启动时提示引导错误:不是VMware引导槽。找不到管理程序(bank6 not a vmware boot bank no hypervisor found)
  5. 代码生成利器:IDEA 强大的 Live Templates
  6. Dubbo (开源分布式服务框架)
  7. 如果输入参数采用“指针传递”,那么加 const 修饰可以防止意外地改动该指针,起 到保护作用
  8. css -- hover伪类
  9. 【BZOJ】1058: [ZJOI2007]报表统计(splay+set)
  10. 通用性能测试过程模型GAME(A)