当前位置: 首页 > news >正文

【洛谷排序算法】P1012拼数-详细讲解

洛谷 P1012 拼数这道题本身并非单纯考察某种经典排序算法(如冒泡排序、选择排序、插入排序、快速排序、归并排序等)的实现,而是在排序的基础上,自定义了排序的比较规则,属于自定义排序类型的题目。不过它借助了标准库中排序算法的功能来完成排序操作,下面详细解释:
在这里插入图片描述

这道题本质上是通过确定数字的拼接顺序来得到最大拼接数,虽然主要思路是利用字符串及其比较规则来实现,但也可以基于数组结合一些转换操作来解决,以下是大致思路和代码示例:

【算法思路】

  • 首先将输入的数字存储在数组中。
  • 然后自定义一个比较函数,在比较函数中,将数组的数字转换为字符串进行拼接比较,从而确定数字的排序顺序。
  • 最后将排好序的数组中的数字转换为字符串并拼接输出,得到最大的拼接结果。

【代码示例】

#include<iostream>
#include<algorithm>
#include<string>
#include<vector> 
using namespace std;//自定义比较函数
bool compare(int a,int b){string s1=to_string(a);string s2=to_string(b);return s1+s2>s2+s1;
}int main(){int n;cin>>n;vector<int> nums(n);//定义vector数组,用于存放n个整数 for(int i=0;i<n;++i){//循环依次输入n个整数 cin>>nums[i];} //使用自定义比较函数进行排序 sort(nums.begin(),nums.end(),compare);//遍历数组,拼接输出结果 for(int num:nums){//定义一个int类型的num变量来依次存储nums中的每个元素 cout<<num;} cout<<endl;return 0;
}
  • 自定义比较函数:函数的返回值类型是bool,返回值将决定在排序过程中a和b的顺序关系。如果返回true,表示a应该排在b前面;如果返回false,表示b应该排在a前面。

  • 使用**to_string函数**(来自<string>头文件),将整数a和整数b分别转化为字符串s1和s2。

  • 使用**vector数组nums**而不是直接定义一个普通整型数组:vector是动态数组,避免空间浪费或空间不足的情况;vector与C++标准库中的许多算法(如sort)有很好的兼容性。在使用sort函数对vector进行排序时,不需要额外处理数组边界等问题。

  • sort排序算法函数nums 是一个 vector<int> 类型的数组,nums.begin() 返回一个指向 nums 数组第一个元素的迭代器,nums.end() 返回一个指向 nums 数组最后一个元素的下一个位置的迭代器。这样就指定了要排序的元素范围是 nums 数组中的所有元素。sort 函数在排序过程中,会不断调用这个 compare 函数来比较元素之间的大小关系,从而确定元素的最终排序顺序。例如,对于数组中的两个元素 absort 函数会调用 compare(a, b),如果返回 truea 会排在 b 前面;如果返回 falseb 会排在 a 前面。通过调用 sort 函数并传入合适的参数,我们可以方便地对 vector 数组中的元素按照自定义的规则进行排序,从而实现得到最大拼接数的目的。

  • 范围for循环

for (declaration : range) {// 循环体
}

范围 for 循环会自动遍历 range 中的每一个元素,将元素的值依次赋给 declaration 中声明的变量,然后执行循环体。每完成一次循环体的执行,就会获取 range 中的下一个元素,直到遍历完所有元素为止。

相关文章:

【洛谷排序算法】P1012拼数-详细讲解

洛谷 P1012 拼数这道题本身并非单纯考察某种经典排序算法&#xff08;如冒泡排序、选择排序、插入排序、快速排序、归并排序等&#xff09;的实现&#xff0c;而是在排序的基础上&#xff0c;自定义了排序的比较规则&#xff0c;属于自定义排序类型的题目。不过它借助了标准库中…...

在WINDOWS系统使用CMake gui编译NLopt配合VSCode使用

1. 准备工作 安装CMake&#xff1a;从CMake官网下载并安装CMake。下载Nlopt源码&#xff1a;从Nlopt官网或GitHub仓库下载Nlopt源码。安装编译器&#xff1a;确保已安装Visual Studio或其他支持的编译器&#xff08;如MinGW&#xff09;。 2. 配置CMake 方式1 打开CMake GU…...

angular生命周期

ngOnChanges&#xff1a;当组件的输入属性&#xff08;Input&#xff09;发生变化时调用。 ngOnInit&#xff1a;在组件的输入属性初始化后调用&#xff0c;但此时视图尚未加载。 ngAfterContentInit&#xff1a;在组件的内容投影&#xff08;ng-content&#xff09;初始化后…...

[AI概念域] AI 大模型是如何被训练出来的?(通俗解读)

说明&#xff1a;这里使用 学生成长五部曲 比喻带你理解大模型如何从零开始学会思考。 AI大模型的训练过程可分为四个核心阶段&#xff1a; 首先进行海量数据收集与清洗&#xff0c;如同为“学生”准备涵盖各领域知识的教材库&#xff1b;接着通过预训练让模型完成“填空题”…...

Mellanox的LAG全称是什么?网卡的创建机制如何?(Link Aggregation Group 链路聚合组)

背景 对于双端口的网卡&#xff0c;有时候有将链路聚合的需求。在Mellanox网卡上通过LAG提供。对于RoCE的报文在Mellanox上也可以通过LAG来完成报文收发&#xff0c;叫做RoCE over LAG。但是仅仅适用于双端口卡。 关键点 LAG&#xff1a; Link Aggregation Group (LAG) 链路…...

【最大通过数——二分】

题目 代码 #include<bits/stdc.h> using namespace std; using ll long long;const int N 2e510;int n, m, k; ll a[N], b[N];bool check(int mid) {for(int i 0; i < mid; i){if(i > n) break;if(mid-i > m) continue;if(a[i] b[mid-i] < k) return tr…...

Liunx系统中FTP与NFS

目录 一、FTP文件传输协议 1.1、FTP工作原理 1.2、FTP状态码 1.3、FTP用户类型 1.4、FTP软件vsftpd 1.4.1、安装vsftpd 1.4.2、vsftpd配置文件 二、NFS网络文件系统 2.1、NFS工作原理 2.2、NFS软件 2.3、NFS共享配置文件格式 2.4、NFS相关命令 2.4.1、exportfs 2.…...

uniapp 测试 IPA 包安装到测试 iPhone

将uniapp测试IPA包安装到测试iPhone有以下几种方法&#xff1a; 使用Xcode安装 确保计算机上安装了Xcode&#xff0c;并将iOS设备通过数据线连接到计算机。打开Xcode&#xff0c;在菜单栏中选择Window->Devices and Simulators&#xff0c;在设备列表中找到要安装的iPhone…...

结构体指针传递给函数注意事项

在 C 语言中&#xff0c;传递结构体指针给函数是一种常见且高效的编程方式。不过&#xff0c;在实际操作时&#xff0c;有一些重要的注意事项需要留意&#xff0c;下面为你详细介绍&#xff1a; 1. 避免空指针引用 在函数内部使用结构体指针前&#xff0c;要先检查该指针是否为…...

mfy学习笔记

创建表并导入数据 CREATE TABLE sales (id INT,salesperson STRING,region STRING,sales_amount INT,sale_date DATE );INSERT INTO sales (id, salesperson, region, sales_amount, sale_date) VALUES (1, Alice, North, 1000, 2023-01-01), (2, Bob, South, 1500, 2023-01-0…...

C语言--文件操作

第16讲&#xff1a;文件操作 1. 为什么使用文件&#xff1f; 如果没有文件&#xff0c;我们写的程序的数据是存储在电脑的内存中&#xff0c;如果程序退出&#xff0c;内存回收&#xff0c;数据就丢失了&#xff0c;等再次运行程序&#xff0c;是看不到上次程序的数据的&…...

网络安全内参

在我的IT职业生涯的早期&#xff0c;Sun Microsystems被认为是一个计算机梦想家。Sun很早就创造了一个有趣的公司口号:“The network is the computer.”这是什么意思&#xff1f;这意味着IT基础设施以松散耦合的体系结构连接在一起&#xff0c;通过以太网电缆和TCP/IP协议等网…...

C++大整数类的设计与实现

1. 简介 我们知道现代的计算机大多数都是64位的&#xff0c;因此能处理最大整数为 2 64 − 1 2^{64}-1 264−1。那如果是超过了这个数怎么办呢&#xff0c;那就需要我们自己手动模拟数的加减乘除了。 2. 思路 我们可以用一个数组来存储大数&#xff0c;数组中的每一个位置表…...

在 macOS 系统上安装 kubectl

在 macOS 系统上安装 kubectl 官网&#xff1a;https://kubernetes.io/zh-cn/docs/tasks/tools/install-kubectl-macos/ 用 Homebrew 在 macOS 系统上安装 如果你是 macOS 系统&#xff0c;且用的是 Homebrew 包管理工具&#xff0c; 则可以用 Homebrew 安装 kubectl。 运行…...

【人工智能】蓝耘智算平台盛大发布DeepSeek满血版:开创AI推理体验新纪元

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀ 蓝耘智算平台 蓝耘智算平台核心技术与突破元生代推理引擎快速入门&#xff1a;三步调用大模型接口&#xff0c;OpenAI SDK无缝兼容实战用例文…...

构建数据治理闭环:DAMA视角下的全流程实践与价值变现

随着数字经济的迅速发展&#xff0c;数据已成为企业核心资产&#xff0c;高效的数据治理体系正变得至关重要。本文基于DAMA理论&#xff0c;从数据资产入表、分类分级、确权登记到元数据管理、数据质量监控&#xff0c;再到数据集成、互操作及主数据管理&#xff0c;全流程构建…...

《深度剖析:AI与姿态估计技术在元宇宙VR交互中的应用困境》

在元宇宙的宏大版图里&#xff0c;虚拟现实&#xff08;VR&#xff09;交互是构建沉浸式体验的关键支柱&#xff0c;而人工智能&#xff08;AI&#xff09;与姿态估计技术的融合&#xff0c;本应成为提升交互体验的强大引擎。但在实际应用中&#xff0c;它们面临着诸多复杂且棘…...

【Python LeetCode】面试经典 150 题

数组 / 字符串快慢指针&#xff08;双指针&#xff09;总结88. 合并两个有序数组27. 移除元素26. 删除有序数组中的重复项80. 删除有序数组中的重复项 II Boyer-Moore 投票算法169. 多数元素扩展&#xff1a;寻找 n/3 多数元素 翻转法189. 轮转数组 贪心121. 买卖股票的最佳时机…...

2011-2019年各省乡镇综合文化站机构数数据

2011-2019年各省乡镇综合文化站机构数数据 1、时间&#xff1a;2011-2019年 2、来源&#xff1a;国家统计局、统计年鉴 3、指标&#xff1a;行政区划代码、地区、年份、乡镇综合文化站机构数 4、范围&#xff1a;31省 5、指标解释&#xff1a;乡镇综合文化站是中国基层文化…...

LeetCode 热题100 226. 翻转二叉树

LeetCode 热题100 | 226. 翻转二叉树 大家好&#xff0c;今天我们来解决一道经典的算法题——翻转二叉树。这道题在 LeetCode 上被标记为简单难度&#xff0c;要求我们翻转一棵二叉树&#xff0c;并返回其根节点。下面我将详细讲解解题思路&#xff0c;并附上 Python 代码实现…...

Dify平台上的LiuJuan20260223Zimage模型部署与优化

Dify平台上的LiuJuan20260223Zimage模型部署与优化 在当今AI应用快速发展的背景下&#xff0c;高效部署和优化模型成为很多开发者的实际需求。本文将分享在Dify平台上部署LiuJuan20260223Zimage模型的实践经验&#xff0c;帮助你在生产环境中获得更好的性能和稳定性。 1. 理解L…...

2026届毕业生推荐的五大AI写作网站实际效果

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 使AIGC&#xff08;人工智能生成内容&#xff09;检测率得以降低的关键核心之所在&#xff0…...

树莓派Pico玩转TFmini Plus雷达:MicroPython驱动教程与避坑指南(附IIC模式切换)

树莓派Pico玩转TFmini Plus雷达&#xff1a;MicroPython驱动教程与避坑指南&#xff08;附IIC模式切换&#xff09; 当树莓派Pico遇上TFmini Plus雷达&#xff0c;会碰撞出怎样的火花&#xff1f;这款售价仅4美元的微控制器&#xff0c;凭借其双核ARM Cortex-M0处理器和灵活的G…...

mysql数据库性能基准测试工具推荐_使用sysbench进行压力测试

sysbench 是 MySQL 压测的事实工业标准&#xff0c;因其 Lua 脚本灵活性、指标可对标 SLO 且被主流云厂商广泛采用&#xff1b;必须源码编译以适配 MySQL 8.0 认证机制&#xff1b;prepare 卡住多因权限、网络或 max_allowed_packet 不足&#xff1b;不同 Lua 脚本事务结构差异…...

别再只做压力测试了:大模型工程化必须落地的5类混沌实验(附Prometheus+OpenTelemetry可观测性埋点规范)

第一章&#xff1a;别再只做压力测试了&#xff1a;大模型工程化必须落地的5类混沌实验&#xff08;附PrometheusOpenTelemetry可观测性埋点规范&#xff09; 2026奇点智能技术大会(https://ml-summit.org) 大模型服务在生产环境中暴露出的故障模式远超传统API服务——token流…...

遥感数字图像处理教程【1.7】

3 . 5 . 3 卷 积卷 积 &#xff08;convolution&#xff09;是空间域上针对特定窗口进行的运算&#xff0c;是图像平滑、锐化中使用的基本计算方法。设窗口大小为冽X % &#xff08;寸 &#xff09;是中心像素,/ &#xff08;》&#xff09;&#xff09;是图像像素值&#xff0…...

Behaviac终极指南:掌握游戏AI行为树的7个实用技巧

Behaviac终极指南&#xff1a;掌握游戏AI行为树的7个实用技巧 【免费下载链接】behaviac behaviac is a framework of the game AI development, and it also can be used as a rapid game prototype design tool. behaviac supports the behavior tree, finite state machine …...

从YOLO识别到夹爪闭合:一个完整ROS机械臂抓取项目的保姆级节点启动顺序

从YOLO识别到夹爪闭合&#xff1a;ROS机械臂抓取项目的节点启动顺序与联调指南 当你面对实验室里连接好的机械臂、相机和夹爪&#xff0c;却不知从哪个终端窗口开始启动时&#xff0c;这种茫然我深有体会。去年在部署第一个抓取系统时&#xff0c;我曾因为节点启动顺序错误导致…...

从零开始学习GDScript编程:在浏览器中免费掌握Godot游戏开发语言

从零开始学习GDScript编程&#xff1a;在浏览器中免费掌握Godot游戏开发语言 【免费下载链接】learn-gdscript Learn Godots GDScript programming language from zero, right in your browser, for free. 项目地址: https://gitcode.com/gh_mirrors/le/learn-gdscript …...

山姆会员店商品数据监测方案:低代码采集+自动翻页实战(京东版)

山姆会员店商品数据智能监测系统&#xff1a;低代码解决方案与实战策略 站在商超零售研究的第一线&#xff0c;我常常需要面对一个现实问题&#xff1a;如何持续追踪山姆这类会员制超市的价格波动和品类变化&#xff1f;传统的数据采集方式要么需要投入大量开发资源&#xff0c…...