貪心算法求解邊界最大數

貪心算法求解邊界最大數(拼多多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:定義和初始化結構體數組輸出結…