【NC16783】拼数

题目

拼数

自定义字符串排序

思路

经过观察可以知道:越高位的数越大,这个数就应该排在越前面的位置,比如 4321 4321 4321 4331 4331 4331,则 4331 4331 4331 应该排在前面。

所以将给出的整数转为字符串更容易操作。

将数转为字符串之后,可以对这个字符串数组进行排序,排序规则如下:

对两个字符串从左往右遍历:

  1. 如果对应位置的字符相同则相同,否则直到对应位置的字符不相同,字符串大小由第一个不相同的字符大小决定;
  2. 如果其中某个字符串的长度小于另一个,也就是说字符串 a a a 是字符串 b b b 的前缀,则判断字符串 b b b 的首尾字符大小:
    2.1 如果字符串 b b b 的首字符大于字符串 b b b 的尾字符,则规定字符串 b b b 小于字符串 a a a
    2.2 如果字符串 b b b 的首字符小于等于字符串 b b b 的尾字符,则规定字符串 b b b 大于字符串 a a a

代码

// 纯C语言
#include <stdio.h>
#include <stdlib.h>  // qsort()
#include <string.h>  // strcmp() 等
#define N 20// 字符串比较函数
int cmp(const void* a, const void* b) {const char* aa = (const char*)a;const char* bb = (const char*)b;int p = strlen(aa), q = strlen(bb);// 如果是前缀,则判断首尾字符的大小if (!strncmp(aa, bb, p) && bb[0] > bb[q - 1]) return 114514;if (!strncmp(bb, aa, q) && aa[0] > aa[p - 1]) return -114514;return strcmp(aa, bb);
}int main(void) {int n = 0, i = 0, j = 0, p = 0, q = 0;scanf("%d", &n);char s[n][N];for (i = 0; i < n; i++) {scanf("%s", s[i]);}qsort(s, sizeof(s) / sizeof(s[0]), sizeof(s[0]), cmp);for (i = n - 1; i >= 0; i--) {printf("%s", s[i]);}printf("\n");return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/758401.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在服务器上配置源和安装anaconda

在服务器上配置源和安装anaconda解决无法import torch的方法&#xff1a; 一、在 anaconda上创建环境 1、创建环境 conda create -n yourname pythonx.x 2、查看环境 conda info --envs 3、进入环境 source activate your_env_name 4、退出环境 conda deactivate 5、…

广播接收不到

BroadcastQueue: Background execution not allowed: receiving Intent 最主要是要制定包名

程序计数器

程序计数器 JVM中的程序计数器(Program Counter Register)并非是广义上所指的物理寄存器&#xff0c;是对物理PC寄存器的一种抽象模拟 PC寄存器(程序计数器) PC寄存器用来存储指向下一条指令的地址&#xff0c;也即将要执行的指令代码。由执行引擎读取下一条指令。 它是一块很…

Adams Car——Adams car与Simulink联合仿真

1.修改悬架阻尼、刚度 ①先找到车辆悬架阻尼和刚度文件,这里以阻尼显示为例 ②修改阻尼曲线 找到对应车的文件 ③修改完后进行替换,刚度修改同理 2.转动惯量与车的质量修改

【晶振选型】VCTCXO TCXO 布线 参考

一、供电旁路电容 二、使能信号 三、输出的交流耦合 四、输出波形转换 五、压控滤波电容 最后 CTS的是真不错&#xff0c;1K可是-140啊

Linux---基本操作命令之用户管理命令

1.1useradd 添加新用户 root用户&#xff1a;/root 普通用户&#xff1a;/home/ 创建的用户还是david&#xff0c;只是在dave文件夹下 1.2 passwd 设置密码 给用户tony设置密码: 123456 1.3 id 查看用户是否存在 查看有没有这个用户&#xff1a;id 名字 gid&#xff1a;用…

Spring MVC文件下载配置

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 文件下载 在Spring MVC中通常利用commons-io实现文件下载&#xff0c;示例代码如下&#xff1a; Controller RequestMapping("......") public class DownloadC…

外卖项目:使用AOP切面编程实现增删改查的操作日志记录(debug断点调试)

文章目录 一、问题描述二、问题分析三、断掉调试四、代码展示 一、问题描述 需求&#xff1a;将项目中增、删、改相关接口的操作日志记录到数据库表中。 操作日志信息包含&#xff1a; 操作人、操作时间、执行方法的全类名、执行方法名、方法运行时参数、返回值、方法执行时…

WebRTC实现部署到局域网

前面已经实现了一对一视频、一对多视频和一对多虚拟视频&#xff0c;所以&#xff0c;这节就来试试把前面做好的项目部署到局域网上&#xff0c;边学边用才能让自己干劲十足。 粉丝福利&#xff0c; 免费领取C音视频学习资料包学习路线大纲、技术视频/代码&#xff0c;内容包括…

银河麒麟服务器系统中intel-x710网卡丢包问题

银河麒麟服务器系统中intel-x710网卡丢包问题 一 系统环境二 问题描述三 问题分析过程3.1 查看网卡配置文件3.2 netstat -ni查看丢包和重传3.3 使用ethtool -S {网卡名}查看drop3.4 使用sar -n DEV查看丢包情况3.5 使用sar -n ETCP 1查看重传情况3.6 查看/proc/net/snmp中&…

python内置函数 N

python内置函数 N Python 解释器内置了很多函数和类型&#xff0c;任何时候都能使用。 N 名称描述next返回迭代器中的下一个元素。 next(iterator) next(iterator) next(iterator, default) next()是一个内置函数&#xff0c;用于从迭代器中获取下一个项目。它通常与迭代…

MySQL数据库基本操作和管理

目录 一.MySQL数据库基本操作 1.SQL分类 &#xff08;1&#xff09;数据库&#xff1a;database &#xff08;2&#xff09;表&#xff1a;table&#xff0c;行&#xff1a;row 列&#xff1a;column &#xff08;3&#xff09;索引&#xff1a;index &#xff08;4&…

Resilience4j原理及应用:构建高可用性系统的熔断、限流与容错机制(一)

本系列文章简介&#xff1a; 在本系列文章中&#xff0c;我们将深入探讨Resilience4j的原理及应用&#xff0c;包括熔断器、限流器和容错策略的工作原理、配置方法以及最佳实践。通过学习和掌握Resilience4j的使用技巧&#xff0c;我们将能够更好地构建高可用性系统&#xff0c…

Linux网络编程: TCP协议首部与可选项简述

一、TCP/IP五层模型 物理层&#xff08;Physical Layer&#xff09;&#xff1a;物理层是最底层&#xff0c;负责传输比特流&#xff08;bitstream&#xff09;以及物理介质的传输方式。它定义了如何在物理媒介上传输原始的比特流&#xff0c;例如通过电缆、光纤或无线传输等。…

python中字典相关知识点总结

1.字典的定义 字典&#xff1a;在Python中&#xff0c;字典是一系列键-值对。每个键都与一个值相关联&#xff0c;程序员可以通过键来访问与之相关联的值。 实际举例&#xff1a; student{name:xincun,age:18} 通过实例我们可以发现&#xff0c;键-值对是两个相关联的值。指…

如何实现数据库的主从复制?

如何实现数据库的主从复制&#xff1f; 数据库的主从复制是实现数据备份、负载均衡和故障恢复的重要策略。它涉及一个主数据库&#xff08;Master&#xff09;和一个或多个从数据库&#xff08;Slave&#xff09;&#xff0c;主数据库负责处理写入操作&#xff0c;而从数据库则…

代码随想录算法训练营第二十九天|491.递增子序列、46.全排列、47.全排列 II

文档讲解&#xff1a;491.递增子序列、46.全排列、47.全排列 II 题目链接&#xff1a;491.递增子序列、46.全排列、47.全排列 II 491.递增子序列 class Solution {List<List<Integer>> res new ArrayList<>();List<Integer> path new ArrayList<…

CodeWhisperer插件

一、前言 产品官网地址&#xff1a;What is CodeWhisperer? - CodeWhisperer Amazon CodeWhisperer 是一个通用的、由机器学习驱动的代码生成器&#xff0c;可实时为您提供代码建议。在您编写代码时&#xff0c;CodeWhisperer 会根据您现有的代码和注释自动生成建议。您的个…

JAVA 100道题(6)

6.创建一个表示矩形的类&#xff0c;包括宽度和高度属性&#xff0c;以及计算面积和周长的方法。 下面是一个简单的Python类&#xff0c;表示矩形&#xff0c;包含宽度和高度属性&#xff0c;以及计算面积和周长的方法&#xff1a; python复制代码 class Rectangle: def __ini…

机器人路径规划:基于斑翠鸟优化算法(Pied Kingfisher Optimizer ,PKO)的机器人路径规划(提供MATLAB代码)

一、机器人路径规划介绍 移动机器人&#xff08;Mobile robot&#xff0c;MR&#xff09;的路径规划是 移动机器人研究的重要分支之&#xff0c;是对其进行控制的基础。根据环境信息的已知程度不同&#xff0c;路径规划分为基于环境信息已知的全局路径规划和基于环境信息未知或…