C++基礎算法——貪心算法

思想:總是做出在當前看來是最好的選擇

例題一、排隊打水問題

n個人,r個水龍頭,花費時間最少的安排?(包含等待時間)

#include<iostream>
#include <bits/stdc++.h>
using namespace std;
int main(){int n,r,s=0;cin>>n>>r;int a[510]={0};for (int i=1;i<=n;i++){cin>>a[i];}sort(a+1,a+n+1);//將數組a[]從小到大排序,需要用頭文件#include <bits/stdc++.h>/*for (int i=1;i<=n;i++){cout<<a[i]<<" ";}*///輸出:2 4 6 5for(int i=1;i<=n;i++){if(i>=r+1)a[i]=a[i]+a[i-r];s+=a[i];}cout<<s;return 0;
}

例題二、分發餅干(LeetCode455)

假設你是一位很棒的家長,想要給你的孩子們一些小餅干。但是,每個孩子最多只能給一塊餅干。

對每個孩子?i,都有一個胃口值?g[i],這是能讓孩子們滿足胃口的餅干的最小尺寸;并且每塊餅干?j,都有一個尺寸?s[j]?。如果?s[j]?>= g[i],我們可以將這個餅干?j?分配給孩子?i?,這個孩子會得到滿足。你的目標是滿足盡可能多的孩子,并輸出這個最大數值。

#include<iostream>
#include <bits/stdc++.h>
using namespace std;
int main(){int g[500]={0};			//孩子int s[500]={0};			//餅干int i,j,n=0;				//n是滿足的個數cin>>i>>j;for(int k=0;k<=i-1;k++)cin>>g[k];for(int k=0;k<=j-1;k++)cin>>s[k];sort(s,s+j);sort(g,g+i);int index=j-1;for(int k=i-1;k>=0;k--){if(index>=0&&s[index]>=g[k]){n++;index--;}}cout<<n;return 0;
}
/*
輸入1:
2 3
1 2
1 2 3
輸出1:
2輸入2:
4 4
1 2 7 10
1 3 5 9
輸出2:
3
*/

例題三、最大子數組和

53. 最大子數組和

給你一個整數數組?nums?,請你找出一個具有最大和的連續子數組(子數組最少包含一個元素),返回其最大和。

子數組是數組中的一個連續部分。

#include<iostream>
using namespace std;
int main(){int n=0,result=0,count=0;int a[500]={0};int j=0;do{cin>>a[j];j++;}while(getchar()!='\n');n=j;for(int i=0;i<=n;i++){count+=a[i];if(count>result)result=count;if(count<0)count=0;}cout<<result<<endl;return 0;
}

例題四、買賣股票的最佳時機 II

122. 買賣股票的最佳時機 II - 力扣(LeetCode)

#include<iostream>
using namespace std;
int main(){int n=0,sum=0;int a[500]={0};int j=0;do{cin>>a[j];j++;}while(getchar()!='\n');n=j;for(int i=1;i<=n;i++){sum+=max(a[i]-a[i-1],0);}cout<<sum<<endl;return 0;
}
/*
輸入:7 1 5 10 3 6 4
輸出:12
*/

例題五、跳躍問題I

55. 跳躍游戲 - 力扣(LeetCode)

思路:看cover面積是否超過即可!

#include<iostream>
#include<cstdio>
using namespace std;
int main(){int n,result=0,count;cin>>n;int a[500]={0};for(int i=0;i<n;i++){cin>>a[i];}for(int i=0;i<=n;i++){count+=a[i];if(count>result)result=count;if(count<0)count=0;}cout<<result<<endl;return 0;
}

例題六、跳躍問題II

45. 跳躍游戲 II - 力扣(LeetCode)

#include<iostream>
#include<cstdio>
#include <bits/stdc++.h>
using namespace std;
int main(){int result=0,next=0,cur=0;int num[10001]={0};int i=0;do{cin>>num[i];i++;}while(getchar()!='\n');int j;j=i;for(i=0;i<=j;i++){next = max(next,i+num[i]);if(i==cur){result++;cur=next;if(next>=j-1)break;}}cout<<result<<endl;return 0;
}

例題七、K次取反后最大化的數組和

1005. K 次取反后最大化的數組和 - 力扣(LeetCode)

#include<iostream>
#include<cstdio>
#include <bits/stdc++.h>
using namespace std;
int main(){int a[10001];int K,i=0;do{cin>>a[i];i++;}while(getchar()!='\n');int j=i;//j是數組元素個數cin>>K;sort(a,a+j);//將所有數從小到大排列int negative=0;//記錄負數的個數for(i=0;i<=j-1;i++){if(a[i]<0)negative++;}if(K<=negative){//反轉次數小于負數個數,則將負數從最小開始反轉for(i=0;i<=K-1;i++)a[i]=-a[i];}if(K>=negative){//反轉次數大于負數個數,則將所有負數反轉//再將數組重排,反轉最小非負數即可//(剩余次數為偶數不需改變,為奇數將a[0]反轉即可!int x=0;while(a[x]<0){a[x]=-a[x];x++;}sort(a,a+j);if((K-negative)%2==1)a[0]=-a[0];}int sum=0;//求和for(i=0;i<=j-1;i++){//cout<<a[i]<<" ";sum+=a[i];}cout<<sum;return 0;
}

例題八、加油站

力扣題目鏈接

#include<iostream>
#include<cstdio>
#include <bits/stdc++.h>
using namespace std;
int main(){int gas[10001]={0};int cost[10001]={0};int ii,jj=0;do{cin>>gas[ii];ii++;}while(getchar()!='\n');do{cin>>cost[jj];jj++;}while(getchar()!='\n');int i=ii;				//i用來表示gas和cost數組的元素個數int cursum=0,totalsum=0,start=0;for(int k=0;k<=i-1;k++){cursum+=gas[k]-cost[k];totalsum+=gas[k]-cost[k];if(cursum<0){start=k+1;cursum=0;}}if(totalsum<0)return -1;return start;
}

例題九、分發糖果

力扣題目鏈接

#include<iostream>
#include<cstdio>
#include <bits/stdc++.h>
using namespace std;
int main(){int rating[10001];int candy[10001];std::fill(std::begin(candy), std::end(candy), 1);int x=0;do{cin>>rating[x];x++;}while(getchar()!='\n');for(int i=0;i<=x-1;i++){if(rating[i+1]>rating[i])candy[i+1]=candy[i]+1;cout<<candy[i]<<" ";}for(int i=x-1;i>=0;i--){if(rating[i-1]>rating[i])candy[i-1]=max(candy[i-1],candy[i]+1);}int sum=0;for(int i=0;i<=x-1;i++){cout<<candy[i]<<" ";sum+=candy[i];}cout<<sum<<endl;return 0;
}
/*
輸入:1 2 2 5 4 3 2
輸出:1 2 1 2 1 1 1 1 2 1 4 3 2 1 14*/

例題十、檸檬水找零

力扣題目鏈接

#include<iostream>
#include<algorithm>
using namespace std;
int main(){int bill[10001];int five=0,ten=0,twenty=0;std::fill(std::begin(bill),std::end(bill),0);int n=0;do{cin>>bill[n];n++;}while(getchar()!='\n');for(int i=0;i<=n-1;i++){if(bill[i]==5)five++;if(bill[i]==10){if(five>0){five--;ten++;}else {cout<<"false"<<endl;return 0;}}if(bill[i]==20){if(ten>0&&five>0){ten--;five--;twenty++;}else if(five>=3){five-=3;twenty++;}else {cout<<"false"<<endl;return 0;}}}cout<<"true"<<endl;return 0;
}

用return 0結束程序

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

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

相關文章

事務和鎖(進階)

事務和鎖&#xff08;進階&#xff09;一.回顧事務1.什么是事務2 為什么要使用事務3 怎么使用事務二.InnoDB和ACID模型三. 如何實現原子性四.如何實現持久性五.隔離性實現原理1.事務的隔離性2.事務的隔離級別3.鎖1&#xff09;鎖信息2&#xff09; 共享鎖和獨占鎖-Shared and E…

【Mentor Xpedition】預習一下

這個軟件不同于一般的PCB設計軟件&#xff0c;采用獨特的中心庫形式&#xff0c;相比cadence的SCH和PCB更緊湊&#xff0c;或者說本就是一家人&#xff0c;不像orcad和allegro強行捆在一起。 基本symbol給原理用&#xff0c;cell給PCB用。

通過代碼認識 CNN:用 PyTorch 實現卷積神經網絡識別手寫數字

目錄 一、從代碼看 CNN 的核心組件 二、準備工作&#xff1a;庫導入與數據加載 三、核心&#xff1a;用代碼實現 CNN 并理解各層作用 1.網絡層結構 2.重點理解&#xff1a;卷積層參數與輸出尺寸計算 四、訓練 CNN 五、結果分析 卷積神經網絡&#xff08;CNN&#xff09;…

基于SpringBoot和Thymeleaf開發的英語學習網站

角色&#xff1a; 管理員、用戶 技術&#xff1a; SpringBoot、Thymeleaf、MySQL、MyBatis、jQuery、Bootstrap 核心功能&#xff1a; 這是一個基于SpringBoot的英語學習平臺&#xff0c;旨在為用戶提供英語學習資料&#xff08;如書籍、聽力、單詞&#xff09;的管理和學習功能…

把 AI 塞進「智能跳繩」——基于 MEMS 傳感器的零樣本卡路里估算器

標簽&#xff1a;MEMS、卡路里估算、零樣本、智能跳繩、TinyML、RISC-V、低功耗、邊緣 AI ---- 1. 背景&#xff1a;為什么跳繩要「算卡路里」&#xff1f; 全球 1.5 億人把跳繩當日常運動&#xff0c;卻苦于&#xff1a; ? 機械計數器誤差大&#xff1b; ? 手機 App 需聯網…

礦用隨鉆測量現場應用中,最新的MEMS陀螺定向短節的優勢是什么?

在當代礦業開發向深部復雜地層進軍的過程中&#xff0c;隨鉆測量技術是控制鉆井定向打孔質量和提升長距離鉆探中靶精度的核心手段&#xff0c;煤礦井下定向鉆孔、瓦斯抽放孔、探放水孔等關鍵工程面臨著一系列特殊挑戰&#xff1a;強磁干擾、劇烈振動、空間受限等惡劣條件。最新…

Spring Boot 使用 RestTemplate 調用 HTTPS 接口時報錯:PKIX path building failed 解決方案

在使用 Spring Boot RestTemplate 調用 HTTPS 接口時&#xff0c;很多同學會遇到類似下面的報錯&#xff1a;javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certif…

【C語言入門級教學】sizeof和strlen的對?

1.sizeof和strlen的對? 1.1 sizeof sizeof 計算變量所占內存空間??的&#xff0c;單位是字節&#xff0c;如果操作數是類型的話&#xff0c;計算的是使?類型創建的變量所占內存空間的??。 sizeof 只關注占?內存空間的??&#xff0c;不在乎內存中存放什么數據。 ?如&a…

線程安全及死鎖問題

系列文章目錄 初步了解多線程-CSDN博客 目錄 系列文章目錄 前言 一、線程安全 1. 線程安全問題 2. 問題原因分析 3. 問題解決辦法 4. synchronized 的優勢 1. 自動解鎖 2. 是可重入鎖 二、死鎖 1. 一個線程一把鎖 2. 兩個線程兩把鎖 3. N 個線程 M 把鎖 4. 死鎖…

2025年8月無人駕駛技術現有技術報告

第1章 引言 無人駕駛技術作為21世紀交通運輸領域最具革命性的技術創新之一&#xff0c;正在深刻地改變著人類的出行方式和生活模式。進入2025年&#xff0c;隨著人工智能、5G通信、高精度傳感器等關鍵技術的快速發展與成熟&#xff0c;無人駕駛技術已從實驗室的概念驗證階段逐…

CETOL 6σ 助力康美醫療(CONMED Corporation)顯著提升一次性穿刺器產品合格率

概述 康美醫療 (CONMED Corporation)將 Sigmetrix 的 CETOL 6σ 公差分析軟件應用于一次性穿刺器的結構優化。該裝置是微創外科技術的一次早期突破。在設計階段&#xff0c;團隊發現“測量臨界間隙”存在尺寸偏差、超出預期范圍&#xff0c;可能在手術中造成患者皮膚損傷&…

LaunchScreen是啥?AppDelegate是啥?SceneDelegate是啥?ContentView又是啥?Main.storyboard是啥?

雖然我很想挑戰一下swiftui,但是精力真的是有限&#xff0c;把精力分散開不是一個很好的選擇&#xff0c;so swiftui淺嘗則止了&#xff0c;目前的精力在html上面。 AppDelegate todo SceneDelegate todo ContentView 最明顯的就是這個&#xff0c;當編輯的時候&#xff0c;頁面…

垃圾回收機制(GC)

目錄 垃圾回收機制 引用計數法 可達性分析算法 垃圾回收算法 標記清除算法 復制算法 標記壓縮算法 JVM中一次完整的GC&#xff08;分代收集算法&#xff09; 在新生代中 在老年代中 空間分配擔保原則 對象從新生代進入老年代的幾種情況? Young GC 和 Full GC 垃…

DNS域名系統

DNS域名系統一、什么是DNS?二、DNS的域名層級1. 根域2. 頂級域3. 二級域4. 三級域&#xff08;子域&#xff09;5. 主機名三、DNS服務器的分類四、DNS的解析過程五、DNS的記錄類型六、FQDN&#xff08;完全限定域名&#xff09;一、什么是DNS? DNS&#xff08;Domain Name S…

虛擬內存和虛擬頁面

虛擬內存虛擬內存是現代操作系統提供的一種內存管理機制&#xff0c;它允許程序訪問比實際物理內存更大的地址空間。虛擬內存通過將程序的地址空間劃分為多個固定大小的塊&#xff08;稱為頁面&#xff09;&#xff0c;并將這些頁面映射到物理內存或磁盤上的頁面文件中&#xf…

【2025年電賽E題】基于k230的矩形框識別鎖定1

文章目錄 概要 整體架構流程 技術名詞解釋 技術細節 1. 多閾值適配與目標識別邏輯 2. 動態ROI與狀態管理機制 3. 數據平滑與偏差計算 4. 硬件適配與UART通信 小結 靜態矩形框識別 動態矩形框追蹤 概要 本文分析的代碼是基于立創廬山派K230CanMV開發板的目標追蹤系統實現,主要…

c語言中的數組可以用int a[3]來創建。寫一次int就可以了,而java中要聲明兩次int類型像這樣:int[] arr = new int[3];

C 語言數組只需寫一次int&#xff0c;而 Java 需兩次int相關聲明&#xff0c;核心原因是兩種語言的數組本質定義、類型系統設計和內存管理邏輯完全不同&#xff0c;具體可拆解為兩點核心差異&#xff1a;一、C 語言&#xff1a;數組是 “內存塊的類型綁定”&#xff0c;一次聲明…

深度學習——詳細教學:神經元、神經網絡、感知機、激活函數、損失函數、優化算法(梯度下降)

神經網絡實戰&#xff1a; 深度學習——神經網絡簡單實踐&#xff08;在乳腺癌數據集上的小型二分類示例&#xff09;-CSDN博客https://blog.csdn.net/2302_78022640/article/details/150779819?spm1001.2014.3001.5502 深度學習——神經網絡&#xff08;PyTorch 實現 MNIST…

Ubuntu 軟件安裝的五種方法

1、App Store 安裝 Ubuntu 里面有 一個App叫 “Ubuntu軟件” 2、Sudo apt-get install 安裝法 注意 使用apt工具安裝軟件&#xff0c;需要sudo&#xff0c;也就是root權限 例子 apt -get install git 會提示查看是否以root用戶運行&#xff0c;install-安裝sudo a…

Day15 (前端:JavaScript基礎階段)

接續上文&#xff1a;Day14——JavaScript 核心知識全解析&#xff1a;變量、類型與操作符深度探秘-CSDN博客 點關注不迷路喲。你的點贊、收藏&#xff0c;一鍵三連&#xff0c;是我持續更新的動力喲&#xff01;&#xff01;&#xff01; 主頁:一位搞嵌入式的 genius-CSDN博…