洛谷P1012 拼数

该博客介绍了洛谷P1012题目的解决方案,主要探讨如何处理数字拼接问题。作者指出,应当根据数字串连接后的顺序而非原始顺序进行排列,并提供了两种方法:一是使用char数组,利用strcpy、strcat和strcmp函数;二是采用string类型,利用其便捷的拼接和比较操作。强调不能简单地按数字大小排序后直接输出,以避免错误结果如32132(应为32321)。
摘要由CSDN通过智能技术生成

题目传送门

分析

读完题后很容易想到把n个数当成字符串处理,然后以两个数字串连接后的大小来决定两个数字串的先后顺序。
也就是如果a+b>b+a,就将a排在前面,反之同理,按照这样处理完后输出即可。

※一定不能从大到小排序之后直接输出!比如321和32,正确答案为32321,但是按直接比较就是32132

Method 1 : char数组

用char数组做需要用到3个字符串函数(仅限char)
strcpy(x,y) —— 将y数组的值赋给x数组
strcat(x,y) —— 拼接x和y
strcmp(x,y) ——比较2个数组,如果ASCII码值不一样,值 小的那个数组小,如果值都一样,长度不一样,短的小。如果x数组小于y,返回1,反之,返回-1,相等,返回0.

Code ↓

# include<bits/stdc++.h>
using namespace std;
char a[21][1000],p[60],q[60];
int main()
{
   
  int n;
  scanf
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值