首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >洛谷 || 拼数(C语言)

洛谷 || 拼数(C语言)

作者头像
小Bob来啦
发布2020-12-08 15:12:21
发布2020-12-08 15:12:21
1.9K0
举报

题目描述

设有 n个正整数 a1...an将它们联接成一排,相邻数字首尾相接,组成一个最大的整数。

输入格式

第一行有一个整数,表示数字个数n。

第二行有n个整数,表示给出的n个整数。

输出格式

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

输入输出样例

输入

3

13 312 343

输出

34331213

源代码:

代码语言:javascript
复制
#include<stdio.h>
#define MAXl 10000
#include<string.h>
char t1[MAXl*2],t2[MAXl*2],a[MAXl][MAXl],b[MAXl]={0},c[MAXl];//字符数组t1,t2[将两字符数组以两种顺序组合(存入之临时数组)],
//二维字符数组a(存放输入数据),字符数组c(临时存放一组字符,相当于冒泡排序中的t),
//字符数组b(初始化为0,用于循环内初始化t1,t2);
int o,n,i,j,l;//整型变量  o(存放字符串比较结果),n(存放字符串总个数),i、j(控制循环),l(临时存放字符数组长度,以组合数组)
int main()
{
    scanf("%d", &n);
    for (i = 0; i < n; i++)
    {
        scanf("%s", a[i]);//每次读入一组数据,赋予a[i]
    }
    for (i = 0; i < n; i++)//循环n次(将第i个数据与第j个数据进行比较,判断位置是否需要进行交换[进行交换])
        for (j = i; j < n; j++)//循环n-i次(因为前面的i个已经作过比较,可以确保其位置恰当)
        {
            strcpy(t1, a[i]);//将a[i]拷贝进t1
            strcpy(t2, a[j]);//将a[j]拷贝进t2
            l = strlen(a[i]);//读取a[i]长度(有效字符之长度)
            strcpy(t1 + l, a[j]);//将a[j]拷贝进t1(拷贝至l个字符后[避免覆盖])
            l = strlen(a[j]);//读取a[j]长度(有效字符之长度)
            strcpy(t2 + l, a[i]);//将a[i]拷贝进t2(拷贝至l个字符后[避免覆盖])
            o = strcmp(t1, t2);//以字典序比较t1,t2大小,结果存入o(若t1>t2返回值>0)
            if (o > 0)//如果o>0,就把a[i]与a[j]交换位置
            {
                strcpy(c, a[i]);//将a[i]拷贝给c
                strcpy(a[i], a[j]);//将a[j]拷贝给a[i]
                strcpy(a[j], c);//将c拷贝给a[j]
            }//完成a[i]与a[j]位置交换
            strcpy(t1, b);//将b拷贝给t1(起到初始化t1的作用[因为b初始化全部元素为0])
            strcpy(t2, b);//将b拷贝给t2(起到初始化t2的作用[因为b初始化全部元素为0])
        }
    for (i = n - 1; i >= 0; i--)
    {
        printf("%s", a[i]);
    }
    return 0;
}

运行结果:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-26,如有侵权请联系 cloudcommunity@tencent.com 删除
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档