贪心算法求解边界最大数(拼多多2504、排列问题)

多多有两个仅由正整数构成的数列 s1 和 s2,多多可以对 s1 进行任意次操作,每次操作可以置换 s1 中任意两个数字的位置。多多想让数列 s1 构成的数字尽可能大,但是不能比数列 s2 构成的数字大。请问在经过任意次操作后,满足上述条件的数列 s1 构成的数字是多少。

s1 = 21453
s2 = 14682
输出res = 14532

### 5.2 C++解决方案时间复杂度:
最坏情况:O(n!)
平均情况:O(n^2)O(n^3)
最好情况:O(n)
空间复杂度:O(n)#include <algorithm>
#include <iostream>
#include <string>// 全局变量,用于存储小于 s2 的 s1 的最大排列结果
std::string max_result = "";// 回溯函数,用于生成 s 的所有排列并找出符合条件的最大排列
void backtrack(std::string &s, int index, const std::string &s2) {// 当 index 等于 s 的长度时,说明已经生成了一个完整的排列if (index == s.length()) {// 检查该排列是否小于 s2 且大于当前记录的最大排列 max_resultif (s < s2 && s > max_result) {// 若满足条件,则更新 max_resultmax_result = s;}return;}// 记录当前位置可以使用的最大字符char max_char = s2[index];// 尝试将 s 中 index 位置及其后面的每个位置的字符与 index 位置交换for (int i = index; i < s.length(); ++i) {// 剪枝 如果当前字符大于目标字符,跳过if (s[i] > max_char)continue;// 交换 s[index] 和 s[i] 的位置std::swap(s[index], s[i]);// 剪枝 如果当前前缀小于目标前缀,继续递归if (s.substr(0, index + 1) <= s2.substr(0, index + 1)) {backtrack(s, index + 1, s2);}// 回溯操作,将字符交换回来std::swap(s[index], s[i]);//剪枝 如果已经找到了一个有效的排列,且当前字符等于目标字符,可以提前返回if (!max_result.empty() && s[i] == max_char) {break;}}
}// 主函数,用于找出小于 s2 的 s1 的最大排列
int largest_less_than(const std::string &s1, const std::string &s2) {// 检查 s1 和 s2 的长度是否相等if (s1.length() > s2.length()) {return -1;}if(s1.length() < s2.length()){std::string s = s1;std::sort(s.begin(), s.end(), std::greater<char>());return stoi(s);}// 复制 s1 到 s 中,并对其进行降序排序std::string s = s1;std::sort(s.begin(), s.end(), std::greater<char>());// 调用回溯函数开始生成排列backtrack(s, 0, s2);// 返回结果return max_result.empty() ? -1 : std::stoi(max_result);
}int main() {// 定义示例字符串 s1std::string s1 = "67433";// 定义示例字符串 s2std::string s2 = "14682";// 调用 largest_less_than 函数得到结果int res = largest_less_than(s1, s2);// 输出结果std::cout << "res = " << res << std::endl;return 0;
}

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

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

相关文章

Ubuntu ZLMediakit的标准配置文件(rtsp->rtmp->hls)

最近在工作中遇到不生成hls资源的问题,后面发现是配置文件有误,特此记录正确的config.ini配置文件,方便查阅。 最终解决方案,通过下面这种格式可以访问到flv视频,具体为什么不太清楚,rtmp格式:rtmp://39.113.48.113:8089/live/1744168516937396175 记录最终解决方案:ht…

# LeetCode 1007 行相等的最少多米诺旋转

LeetCode 1007 行相等的最少多米诺旋转 原题英文&#xff1a;Minimum Domino Rotations For Equal Row 难度&#xff1a;中等 | 标签&#xff1a;数组、贪心 1 题目重述 给定两行长度相同的多米诺骨牌&#xff1a; tops[i] 表示第 i 张骨牌上面的数字&#xff1b;bottoms[…

大数据技术:从趋势到变革的全景探索

📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 在数字化时代的浪潮下,大数据已经不再是一个陌生的概念。从日常生活中的社交媒体,到企业决策支持系统,再到公共管理的大数据应用,它正在改变着我们的工作和生活方式。随着技术的进步,传统的数据…

前端八股Day5——XHS某中厂实习前端一面

没写完&#xff0c;睡醒补 CSS盒模型 //出现频率好高&#xff0c;感觉每次写面经都遇到 W3C标准盒模型(content-box)&#xff1a;盒子宽高width/heightpaddingbordermargin IE怪异盒模型(border-box)&#xff1a;盒子宽高width/heigth(包括padding和border)margin 默认标准切换…

INP指标

什么是INP&#xff08;Interaction to Next Paint&#xff09; 参考网站&#xff1a;webVital-INP文档 定义与核心目标 INP 是一项稳定的 Core Web Vitals 指标&#xff0c;通过统计用户访问期间所有符合条件的互动约定时间&#xff0c;评估网页对用户操作的总体响应能力。最…

剖析扩散模型(Denoising Diffusion Probabilistic Models)

文章目录 1. 前言2. 前向扩散过程(Forward Diffusion)3. 反向生成过程&#xff08;Reverse Process&#xff09;4. 训练和推理过程中的伪代码5. 训练过程代码实现&#xff08;Training&#xff09;5.1 时间嵌入模块——TimeEmbedding5.2 前向扩散过程——GaussianDiffusionTrai…

基于 Spring Boot 瑞吉外卖系统开发(九)

基于 Spring Boot 瑞吉外卖系统开发&#xff08;九&#xff09; 保存菜品 菜品管理页面提供了一个“新增菜品”按钮&#xff0c;单击该按钮时&#xff0c;会打开新增菜品页面。 请求路径/dish&#xff0c;请求方法POST&#xff0c;参数使用DishDto类接收。 DishDto 添加f…

w317汽车维修预约服务系统设计与实现

&#x1f64a;作者简介&#xff1a;多年一线开发工作经验&#xff0c;原创团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339;赠送计算机毕业设计600个选题excel文…

【Agent搭建】利用coze平台搭建一个AI销售?

目录 一、关于coze 核心功能 二、搭建属于你自己智能体 备注&#xff1a;&#xff08;以下说明比较需要调整的板块&#xff09; 1、从Prompt工程开始 2、搭建工作流 3、添加知识 三、总结 一、关于coze Coze是字节跳动推出的AI应用开发平台&#xff0c;专注于帮助用户快速…

Sharding-JDBC分库分表中的热点数据分布不均匀问题及解决方案

引言 在现代分布式应用中&#xff0c;使用Sharding-JDBC进行数据库的分库分表是提高系统性能和扩展性的常见策略。然而&#xff0c;在实际应用中&#xff0c;某些特定的数据&#xff08;如最新订单、热门商品等&#xff09;可能会成为“热点”&#xff0c;导致这些部分的数据处…

DSP48E2 的 MAC模式功能仿真

DSP48E2 仿真代码&#xff1a; 测试的功能为 P i ( A D ) ∗ B P i − 1 P_{i} (AD) * B P_{i-1} Pi​(AD)∗BPi−1​ timescale 1ns / 1nsmodule dsp_tb;// 输入reg CLK;reg CE;reg SCLR;reg signed [26:0] A, D;reg signed [17:0] B;// 输出wire signed [47:0] P;par…

抽象工厂模式(Abstract Factory Pattern)

很好&#xff01;你现在已经开始接触设计模式了&#xff0c;而**抽象工厂模式&#xff08;Abstract Factory Pattern&#xff09;是一种常用于“创建一系列相关产品”**的经典设计模式。 我会一步步帮你理解&#xff1a; &#x1f9e0; 一句话解释 抽象工厂模式&#xff1a;提…

Thymeleaf模板引擎从入门到实战:Spring Boot整合与核心用法详解

在 Java Web 开发的世界里&#xff0c;模板引擎是连接后端数据与前端展示的重要桥梁。Thymeleaf 凭借其强大的功能和简洁的语法&#xff0c;逐渐成为众多开发者的首选。如果你正在寻找一款能够让你的 Web 应用开发更加高效、代码更加优雅的模板引擎&#xff0c;那么 Thymeleaf …

【HarmonyOS】作业三 UI

目录 一. 单选题&#xff08;共10题&#xff0c;10分&#xff09; 1. (单选题, 1分)关于Tabs组件页签的位置设置&#xff0c;下面描述错误的是 2. (单选题, 1分)下面哪个组件不能包含子组件? 3. (单选题, 1分)ArkTS语言的实现计数器功能的组件名称是以下哪个? 4. (单选题…

《算法笔记》10.6小节——图算法专题->拓扑排序 问题 C: Legal or Not

题目描述 ACM-DIY is a large QQ group where many excellent acmers get together. It is so harmonious that just like a big family. Every day,many "holy cows" like HH, hh, AC, ZT, lcc, BF, Qinz and so on chat on-line to exchange their ideas. When so…

博客信息管理/博客管理

&#x1f6e0; 博客管理模块&#xff1a;设计建议 你应该以To B 的后台系统思路来设计&#xff0c;但保持简单、轻量级、自己易维护是关键。下面是针对你这个场景的建议。 &#x1f9f1; 前端页面结构&#xff08;React/Vue 可用&#xff09; 页面 说明 博客列表页 展示所有博…

全平台开源即时通讯IM框架MobileIMSDK:7端+TCP/UDP/WebSocket协议,鸿蒙NEXT端已发布,5.7K Stars

一、基本介绍 MobileIMSDK是一套全平台原创开源IM通信层框架&#xff1a; 超轻量级、高度提炼&#xff0c;lib包50KB以内&#xff1b;精心封装&#xff0c;一套API同时支持UDP、TCP、WebSocket三种协议&#xff08;可能是全网唯一开源的&#xff09;&#xff1b;客户端支持iOS…

SpringBoot商城平台系统设计与开发

概述 SpringBoot商城平台系统实现了商品展示、购物车、订单管理等商城核心功能&#xff0c;适合作为计算机专业设计项目或商城项目开发参考&#xff0c;实现商城平台的核心功能&#xff0c;学习商品管理、订单处理、支付集成等关键技术实现。 主要内容 1. 前台用户功能模块 …

【网络原理】深入理解HTTPS协议

本篇博客给大家带来的是网络原理的知识点, 由于时间有限, 分三天来写, 本篇为线程第三篇,也是最后一篇. &#x1f40e;文章专栏: JavaEE初阶 &#x1f680;若有问题 评论区见 ❤ 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动…

【C语言练习】018. 定义和初始化结构体

018. 定义和初始化结构体 018. 定义和初始化结构体1. 定义结构体示例1:定义一个简单的结构体输出结果2. 初始化结构体示例2:在声明时初始化结构体输出结果示例3:使用指定初始化器初始化结构体(C99及以上标准支持)输出结果3. 结构体数组示例4:定义和初始化结构体数组输出结…