最大整数(Noip1998连接多位数)
2024-08-27 02:26:26
最大整数(Noip1998连接多位数)
【问题描述】
设有n个正整数(n≤20),将它们联接成一排,组成一个最大的多位整数。
例如:n=3时,3个整数13,312,343联接成的最大整数为:34331213
又如:n=4时,4个整数7,13,4,246联接成的最大整数为:7424613
【输入格式】
n
n个数
【输出格式】
联接成的多位数
【输入样例】maxnum.in
3
13 312 343
【输出样例】maxnum.out
34331213
分析:
这个题目很自然地想到把n个数按照字符串排序之后输出即可。
但是对两个串A和B,假如按照正常的strcmp(A,B)的结果来判断A和B的大小关系
从而作为排序依据的话,很容易就可以举例说明不正确:
例如A=“13”,B=“132”,strcmp(A,B)发现A<B,但是AB>BA。
所以,这里应该判断AB和BA的大小关系来判断A和B的大小关系:
若是AB>BA则A>B,若是AB<BA则A<B,否则A==B。
按照这个比较规则对所有字符串排序并输出即可。
#include <stdio.h> #include<stdlib.h> #include<string.h> int cmp(const void * a,const void *b) { ],ba[]; strcpy(ab,(char *)a);strcat(ab,(char *)b); strcpy(ba,(char *)b);strcat(ba,(char *)a); return strcmp(ba,ab); } int main() { int n,i,temp; ][]; freopen("maxnum.in","r",stdin); freopen("maxnum.out","w",stdout); scanf("%d",&n); ;i<n;i++) scanf("%s",a[i]); /*for(i=0;i<n;i++) printf("%s\n",a[i]);*/ qsort(a,n,]),cmp); ;i<n;i++) printf("%s",a[i]); ; }
最新文章
- 【ORACLE】 表空间信息
- Spark java.lang.outofmemoryerror gc overhead limit exceeded 与 spark OOM:java heap space 解决方法
- [转]微服务(Microservice)那点事
- Git.Framework 框架随手记--IIS7运行序列化问题
- 再论EM算法的收敛性和K-Means的收敛性
- Get started with Gazebo in ROS
- Percona-Xtrabackup 2.3.3 死锁不再堵塞备份(二)
- C#- 控制台Timer
- Visual Stuido也有非常多的快捷键
- Codeforces Round #429 (Div. 2) 补题
- python虚拟环境搭建大全(转)
- 补习系列(4)-springboot 参数校验详解
- SQL学习笔记---常用命令
- 使用ajax实现html页面产品详情页文字具体内容
- JavaSE回顾及巩固的自学之路(三)——————所有语言的都存在的基本运算
- C#常用单元测试框架比较:XUnit、NUnit和Visual Studio(MSTest)
- 从零开始学习html(一) Html介绍
- (原)阅读Android-Camera2Video的demo源码和调试心得
- 使用docker部署Asp.net core web应用程序
- Navicat连接Mysql8.0失败:Client does not support authentication protocol requested by server...
热门文章
- 使用PHP生成二维码图像
- CF 329B(Biridian Forest-贪心-非二分)
- [leetcode]Spiral Matrix @ Python
- Gradle Groovy 基础语法 MD
- Red Hat 配置ip地址
- [干货]Kaggle热门 | 用一个框架解决所有机器学习难题
- VS2008 解决Unable to copy file 对路径的访问被拒绝。
- 小教程:自己创建一个jQuery长阴影插件
- maven中的snapshot来源与注意事项
- C#.NET常见问题(FAQ)-如何让Listbox支持多选