貪心(不相交的開區間、區間選點、帶前導的拼接最小數問題)

目錄

1.簡單貪心

2.區間貪心

不相交的開區間

1.如何刪除?

2.如何比較大小

區間選點問題

3.拼接最小數?


1.簡單貪心

比如:給你一堆數,你來構成最大的幾位數

2.區間貪心

不相交的開區間

?思路:

首先,如果有兩個區間包含關系,肯定是取小的那個,扔掉大的那個。

上一步操作完了之后,區間就互不包含,于是,每次都在保證不相交的前提下,

取左端點最大的(或每次都取右端點最小的)

思路是這樣沒錯,實現遇到的問題:

1.如何刪除?

?看了參考代碼,不用刪除,因為如果取左端點最大的,必定是被包含的那個區間,第二部包含了第一步,“首先”可以不干。

2.如何比較大小

需要回憶之前學的“排序”,構造結構體,構造cmp函數

通過代碼

#include <iostream>
#include <vector>
#include <cmath>
#include <string>
#include <cstring>
#include <algorithm>
using namespace std;
const int N=10002;
int n=2,W=2;
int l[N]={1,2},r[N]={5,6};int ans=0;
struct qj
{int left;int right;
}I[N];
bool cmp(qj a1,qj a2)
{if(a1.left!=a2.left) return a1.left>a2.left;else return a1.right<a2.right;
}int main()
{
scanf("%d",&n);
for(int i=0;i<n;i++){scanf("%d %d",&I[i].left,&I[i].right);}
sort(I,I+n,cmp);
if(n>0) ans++;
int l1=I[0].left;
for(int i=1;i<n;i++)
{if(I[i].right<=l1){ans++;l1=I[i].left;}
}
printf("%d",ans);
}

區間選點問題

其實就是:不相交的閉區間

點=列舉出的所有不相交的閉區間的左端點?

真的只改了一個小于號

#include <iostream>
#include <vector>
#include <cmath>
#include <string>
#include <cstring>
#include <algorithm>
using namespace std;
const int N=10002;
int n=2,W=2;
int l[N]={1,2},r[N]={5,6};int ans=0;
struct qj
{int left;int right;
}I[N];
bool cmp(qj a1,qj a2)
{if(a1.left!=a2.left) return a1.left>a2.left;else return a1.right<a2.right;
}int main()
{
scanf("%d",&n);
for(int i=0;i<n;i++){scanf("%d %d",&I[i].left,&I[i].right);}
sort(I,I+n,cmp);
if(n>0) ans++;
int l1=I[0].left;
for(int i=1;i<n;i++)
{if(I[i].right<l1){ans++;l1=I[i].left;}
}
printf("%d",ans);
}

3.拼接最小數?

仔細看例子

思路

問題:如何接收這些輸入?并轉化為實體??

不能以%d輸入,會丟失信息

?答案使用了string類(c++類別),使用cincout

string數組,每一個元素都是string

答案使用了自己構造cmp

if a+b<b+a,則a排b前,讓sort自己排序

輸出要注意00 000的情況,輸出且只輸出一個0

#include <iostream>
#include <vector>
#include <cmath>
#include <string>
#include <cstring>
#include <algorithm>
using namespace std;
const int N=10002;
int n; 
string str[N];
bool cmp(string a,string b)
{return a+b<b+a;
}
int main()
{
//	string a="123";
//	cout<<(a[0]=="1");//"1"報錯,'1'true,1false cin>>n;int flag=0;for(int i=0;i<n;i++)cin>>str[i];sort(str,str+n,cmp);for(int j=0;j<n;j++)
{for(int i=0;i<str[j].length();i++) {	if(str[j][i]!='0') flag=1;if(flag) cout<<str[j][i];}}	
if(!flag) cout<<0;
}

答案是這樣的,從while開始看,用了高端的begin與erase?

bool cmp(string a, string b) {return a + b < b + a;
}int main() {int n;cin >> n;for (int i = 0; i < n; i++) {cin >> nums[i];}sort(nums, nums + n, cmp);string result = "";for (int i = 0; i < n; i++) {result += nums[i];}while (result.length() > 1 && result[0] == '0') {result.erase(result.begin());}cout << result << endl;return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/24609.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/24609.shtml
英文地址,請注明出處:http://en.pswp.cn/web/24609.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

代碼隨想錄算法訓練營第三十二天|LeetCode122 買賣股票的最佳時機Ⅱ、LeetCode55 跳躍游戲、LeetCode45 跳躍游戲Ⅱ

題1&#xff1a; 指路&#xff1a;122. 買賣股票的最佳時機 II - 力扣&#xff08;LeetCode&#xff09; 思路與代碼&#xff1a; 基本思路&#xff1a;一天買入一天賣出&#xff0c;得到每部分正利潤作為局部最優解&#xff0c;例如prices[7, 1, 5, 3, 6, 4]中&#xff0c;…

山東大學軟件學院項目實訓-創新實訓-基于大模型的旅游平臺(三十)- 微服務(10)

目錄 12.5 RestClient操作索引庫 12.5.1創建庫 12.5.2 刪除索引庫 12.5.3 判斷是否存在 12.6 RestClient操作文檔 12.6.1 新增文檔 12.6.2 查詢文檔 12.6.3 修改文檔 12.6.4 刪除文檔 12.6.5 批量導入文檔 12.5 RestClient操作索引庫 酒店mapping映射 ?PUT /hotel{&…

shell簡介

一、Shell 概念定義 Shell 是用 C 語言編寫的程序&#xff0c;是用戶使用 Linux 的橋梁&#xff0c;既是命令語言又是程序設計語言。 shell 腳本為 Shell 編寫的腳本程序&#xff0c;常說的 shell 通常指 shell 腳本。 包含一系列命令的文本文件&#xff0c;這些命令按照特定…

調試環境搭建(Redis 6.X 版本)

今兒&#xff0c;我們來搭建一個 Redis 調試環境&#xff0c;目標是&#xff1a; 啟動 Redis Server &#xff0c;成功斷點調試 Server 的啟動過程。使用 redis-cli 啟動一個 Client 連接上 Server&#xff0c;并使用 get key 指令&#xff0c;發起一次 key 的讀取。 視頻可見…

【python解決】查詢報%d format: a number is required, not str問題

【Python解決】查詢報%d format: a number is required, not str問題 在Python中&#xff0c;字符串格式化是一種常見的操作&#xff0c;用于創建包含變量的字符串。如果你在使用%操作符進行格式化時遇到了%d format: a number is required, not str的錯誤&#xff0c;這意味著…

C# 集合(二) —— List/Queue類

總目錄 C# 語法總目錄 集合二 List/Queue 1. List2. Queue 1. List List有ArrayList和LinkedList ArrayList 類似數組&#xff0c;查找快&#xff0c;插入刪除慢(相對)LinkedList 類似雙向鏈表&#xff0c;查找慢(相對)&#xff0c;插入刪除快 //ArrayList //ArrayList Arr…

ts和js有什么不同

TypeScript&#xff08;簡稱TS&#xff09;和JavaScript&#xff08;簡稱JS&#xff09;之間的主要區別可以歸納為以下幾點&#xff1a; 類型系統&#xff1a; JS&#xff1a;是一種弱類型、動態類型的語言&#xff0c;變量的類型在運行時確定&#xff0c;沒有靜態類型選項。T…

基于SSM的旅游民宿預定系統【源碼】【運行教程】

基于SSM的旅游民宿預定系統 一、項目介紹1. 游客功能2. 管理員功能3. 高級功能 二、項目技術棧三、項目運行四、項目演示總結 大家好&#xff0c;這里是程序猿代碼之路&#xff01;隨著旅游業的快速發展&#xff0c;民宿作為一種獨特的住宿方式越來越受到游客的喜愛。為了提升用…

百華鞋業祝莘莘學子旗開得勝,一舉奪魁

在知識的海洋中&#xff0c; 有一群人以筆為劍&#xff0c; 在漫長的歲月里不斷磨礪&#xff0c; 只為迎接那場人生的重要戰役——高考。 高考&#xff0c; 是學子們十幾年寒窗苦讀的見證&#xff0c; 是他們用奮斗書寫青春考卷的舞臺。 在這個舞臺上&#xff0c; 他們將…

當前主流的App開發技術綜述

一、引言 隨著移動互聯網的蓬勃發展&#xff0c;App&#xff08;應用程序&#xff09;已經成為人們日常生活中不可或缺的一部分。無論是社交、購物、娛樂還是工作學習&#xff0c;App都以其便捷、高效和個性化的特點深受用戶喜愛。而在這一過程中&#xff0c;App開發技術也在不…

周末總結(2024/06/08)

工作 人際關系核心實踐&#xff1a; 要學會隨時回應別人的善意。執行時間控制在5分鐘以內 堅持每天早會打招呼 遇到接不住的話題時拉低自己&#xff0c;抬高別人(無陰陽氣息) 工作上的要點 現狀&#xff08;接受破爛現狀&#xff0c;改變狀態&#xff09; - 和老師溝通過&…

ChatGPT-4o體驗demo

OpenAI 最近推出了其最新的人工智能語言模型——GPT-4O。該模型是在原有 GPT-4 的基礎上進行優化而成&#xff0c;旨在提升生成質量和響應速度。GPT-4O 采用了更加高效的架構設計&#xff0c;使其在處理復雜文本時表現出更快的速度和更高的準確性。GPT-4O 在訓練過程中融入了最…

一些關于機器學習的思路和猜測

一、機器學習能做什么 1、網上說機器學習就是根據已有的圖片、文字、視頻資料&#xff0c;建立一個數據庫&#xff0c;用一個處理算法&#xff0c;把已有的資料進行提取關鍵特征和一些聯系&#xff0c;存入數據庫中。 2、當學習到一定程度&#xff0c;就能跟人一樣到實際場景…

kafka的leader和follower

leader和follower kafka的leader和follower是相對于分區有意義的&#xff0c;不是相對于broker。 因為每個分區都有leader和follower, leader負責讀寫數據。 follower負責復制leader的數據保存到自己的日志數據中&#xff0c;并在leader掛掉后重新選舉出leader。 kafka會再…

pinia 重置狀態插件

一、前言 測試提出&#xff0c;登出登錄后&#xff0c;再次進入頁面后。頁面的查詢項非初始狀態。檢查后發現&#xff0c;是因為查詢項的值存到了store呢&#xff0c;從store中獲取&#xff0c;故需要一個重置store的方法 二、pinia 查閱pinia官網后&#xff0c;發現pinia提…

請求分頁存儲管理方式

目錄 請求分頁中的硬件支持 1. 請求頁表機制 2. 缺頁中斷機構 硬件支持的詳細工作流程 示例代碼 請求分頁中的內存分配 最小物理塊數的確定 分配方式 分配公平性 請求分頁存儲管理方式中的內存分配策略 具體示例 頁面調入策略 最近最久未使用&#xff08;LRU, Leas…

(2024,Vision-LSTM,ViL,xLSTM,ViT,ViM,雙向掃描)xLSTM 作為通用視覺骨干

Vision-LSTM: xLSTM as Generic Vision Backbone 公和眾與號&#xff1a;EDPJ&#xff08;進 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 進 V 交流群&#xff09; 目錄 0. 摘要 2 方法 3 實驗 3.1 分類設計 4 結論 0. 摘要 Transformer 被廣泛用作計算…

linux常用操作命令匯總

各個軟件安裝步驟流程 jdk 鏈接&#xff1a; mysql 鏈接&#xff1a; redis 要查詢 Linux 上各個應用程序占用的內存 要查詢 Linux 上各個應用程序占用的內存&#xff0c;可以使用 top 或 ps 命令結合其他工具來實現。下面介紹兩種方法 方法一&#xff1a;使用 top 命令 打…

Access數據中的SQL偏移注入

使用場景&#xff1a; 目標數據表的字段較多&#xff0c;無法一一獲取的時候&#xff0c;嘗試使用偏移注入的方式實現SQL注入。 原理&#xff1a; 例如&#xff1a;一個表有6個字段&#xff0c;而你想獲取的目標表admin的字段不知道&#xff0c;此時可以使用聯合查詢的方式獲…

反射型xss靶場練習

反射型xss危害小&#xff0c;這里使用的xss靶場是常用的xss靶場&#xff1a;xss-labs。 當我們完成彈窗后就通過該關卡&#xff0c;說該關卡存在xss的一個漏洞并且可以解析js代碼。 第一關&#xff1a; 這里沒有過濾我們輸入的代碼&#xff1a;直接將js代碼放在js代碼中&a…