數據結構算法-貪心算法

引言

貪心:人只要有 “需求“ ,都會有有點“貪“, 這種“貪“是一種選擇,或者“”取舍“
RTS(即時戰略)游戲: 帝國時代里 首先確保擁有足夠的人口 足夠的糧食,足夠的戰略資源 足夠的兵力才能發起一次“圍剿”
當然 也可以邊戰斗 邊收集資源 升級時代等等 你會發現,但選擇升級時代 時,資源種類多了一些 兵種也會有一些變化 (好像在說廢話…)當然只要能快一點 擊敗敵人 這樣融合軍事,收集資源 城建 模擬貨幣交易 的游戲 才是真正的玩 腦子游戲 (這是 個人定義 )
你能看出來哪里 貪心的選擇?
人口;多一些勞動力
收集資源 人口一多 可以壓榨(軍閥模擬器?)哈哈,人要想為自己而活 是不能做到的 當然(美利堅)除外 恨不得自己…
為集體人民而活 短期來看沒一點成果,但長期 看到會有點收獲
這好比現實生活 短期投資 沒一點回報,但只要時間充足 一定會一些回報
足夠的戰略資源 : 糧食中的大豆(帝國時代沒有大豆) 作為戰略資源 確定有點變態 那頭惡臭味的鷹 引起了他的注意
兔子團購鷹豆,鷹反而說一些:由于天氣xxx 推遲 結果買的是虛價 賣的 確是陰間價 這就是那鷹的作風 看不起兔子
只能說“從此我已八嘎呀路“這位原神玩家請你出去 不要再這里鬧!

足夠的兵力 :這不就是必備的 ,

升級時代: 滿足一定的條件: 升級時代好處在于使用當前最新的科技 和最新的軍種
食物 滿足800 ,木材 1000 黃金(貨幣)500 統統滿足了 …
隨著時代的更變 若集體不前進 就會挨打的

開放世界類型也是一樣的道理
以原神為例 當你選擇了某個任務 必須做完為止中間不能跳過,才可以接下一個任務 當然原神是非常自由的 想打啥就打啥 缺啥補充啥.這樣 才有樂趣這是所謂的動態平衡 原神有一個點 叫謀權篡位 ,神突然死 去,當人們面對自己危在旦夕璃月需要變成人的政權。也是人主導 并且化解這場危機當然也非常的末代皇帝 味道 鐘離表示:我累了 守護你們這么多年了 我就得意使絆子 “我特意假死 看看情況沒想到卻 … 好吧,人畢竟是未來 到是便宜了,胡桃”…我選擇以人身份活著 那也不錯 派蒙:一個社會“廢人” 調侃 確實正確 好在有往生堂胡堂主 做客卿 …

貪心算法核心思想

貪心:謀取自身的利益,做出不能改變想法,只能一直做下去直到找到 ,或者沒找到

定義一種選擇
這種選擇可能能找到問題的解 (局部最優解)若不能找到問題的解(局部最優解)返回錯誤值 ,能找到問題的解(局部最優解)直接返回
這種選擇找不到全局最優解,

比方:每次只看播放量 很高的視頻作品 ,點贊量 很高 即使再拉也就短暫, 而不是長期
比如說:某一些電視劇角色看起來,風風光光,背后暗箱操作,結果為自己罪行買單(你們肯定知道我要說的是誰:高啟強)
所以但凡人都會有私心想怎么搞最大化 以及風險小的利益

不考慮長久 只考慮當前如何最優

數據結構 圖: 每次選擇最近的頂點 作為深度優先遍歷

貪心算法實現思路

錢幣找零 大家非常不陌生,但移動支付打破了格局 讓小偷都 只敢偷手機了 可得知信息安全重要性,
但錢包可能在一些老人可是還在用紙幣,讓我們回憶回憶如何通過紙幣來找零錢

我們先不管五毛 只 找整
首先這些面值為 1塊錢 2塊錢 5塊錢 10塊錢 20塊錢 50塊錢 100塊錢
但只是面值 有多少張 才是硬道理 總不能沒有吧 那怎么發行 那怎么流通 ?
所以這個紙幣的張數這就來 首先說明一下 銀行怎么做我們就怎么做 交易限制 在5wRMB 每日
但我們比還有狠 直接 1塊錢(20張) 2塊錢(6張) 5塊錢(3張) 10塊錢 (6張) 20塊錢(2張) 50塊錢(3張) 100塊錢 (5張)一共是807元 倘若給我找600塊 若是從1塊開始找 效率低下 你想想誰會用這種方法! 很明顯最大 開始

在這里插入圖片描述

貪心應用算法專區

#include<iostream>  
using namespace std;  // 定義一個常量N為7,表示紙幣面額的數量  
const int N = 7;  // 定義一個數組paperMoney,存儲紙幣的面額  
const int  paperMoney[N] = { 1,2,5,10,20,50,100 };  
// 定義一個數組paperMoneyCount,存儲每種面額紙幣的數量  
const int paperMoneyCount[N] = { 10,2,3,1,2,3,5 };  // 定義一個函數change,輸入是需要找零的金額,輸出是需要多少張紙幣  
// 這個函數用于計算找零所需的紙幣數量  
int change(int Money) {  int num = 0; // 初始化紙幣數量為0  for (int i = N - 1; i >= 0; i--){ // 從大到小遍歷紙幣面額  int currentPaperMoneyCounts =  Money / paperMoney[i] ; // 計算需要多少張當前面額的紙幣  int PaperMoneyCounts = currentPaperMoneyCounts < paperMoneyCount[i] ? currentPaperMoneyCounts : paperMoneyCount[i]; // 如果當前面額的紙幣數量不足,則使用全部數量  // 輸出需要多少張當前面額的紙幣  cout << "需要" << paperMoney[i] << "面值紙幣" << "兌換 " << PaperMoneyCounts <<" 張" << endl;  Money -= PaperMoneyCounts* paperMoney[i]; // 從需要找零的金額中減去已經使用的當前面額紙幣的總價值  num += PaperMoneyCounts; // 增加已經使用的紙幣數量  if (Money<=0){ // 如果已經沒有需要找零的金額,跳出循環  break;  }  }  if (Money>0){ // 如果最后還有需要找零的金額,說明無法找零,返回-1  num = -1;  }  return  num; // 返回需要的紙幣數量或者-1(無法找零)  
}  // 主函數,程序的入口點  
int main(void) {  int Money; // 定義一個變量存儲需要找零的金額  cout << "請輸入需要找零的紙幣:"; cin >> Money; const int ret = change(Money); // 調用change函數計算需要的紙幣數量if (cin&&ret!=-1){ // 如果用戶輸入成功且沒有無法找零的情況,輸出需要的紙幣數量  cout <<"需要" << ret << "張紙幣才能找零" << endl;  }  else { cout << "找不開!" << endl;  }  return 0; 
}

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

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

相關文章

干貨科普 | 不同類型的機器人及其在工作中的應用

原創 | 文 BFT機器人 制造商在其操作中使用各種類型的機器人&#xff0c;每種機器人都具有特定的能力和功能。我們將討論制造業中使用的一些最常見類型的機器人&#xff0c;以及哪種機器人可能最適合您的應用。 01 關節機器人 關節式機器人是一種工業機器人&#xff0c;具有一…

npm,yarn,pnpm 清理緩存

目錄 1&#xff0c;為什么要清理緩存1&#xff0c;緩存文件太多&#xff0c;影響系統運行2&#xff0c;不同源會有區別 2&#xff0c;命令2.1&#xff0c;npm2.2&#xff0c;yarn2.3&#xff0c;pnpm 1&#xff0c;為什么要清理緩存 1&#xff0c;緩存文件太多&#xff0c;影響…

關于easy-es的聚合問題

es實體類&#xff1a; public class ChemicalES {IndexId(type IdType.CUSTOMIZE)private Long id;HighLightIndexField(fieldType FieldType.TEXT, analyzer "ik_max_word")private String name;IndexField(fieldType FieldType.KEYWORD)private List<Stri…

三數之和 Java版

題目描述&#xff1a;給你一個包含 n 個整數的數組 nums&#xff0c;判斷 nums 中是否存在三個元素 a&#xff0c;b&#xff0c;c &#xff0c;使得 a b c 0 請你找出所有和為 0 且不重復的三元組。 注意&#xff1a;答案中不可以包含重復的三元組。 輸入&#xff1a;nums …

“土味出海”,屢試不爽!短劇出海引來新一輪爆發?

土味和“錢途”并存的短劇不僅在國內迅猛爆發&#xff0c;今年下半年以來海外市場多部爆火短劇出現&#xff0c;“短劇出海”的話題熱度不斷攀升&#xff0c;絲毫不差2021年網文出海的盛況。 “霸總的愛&#xff0c;日入千萬刀”&#xff0c;是真實存在的&#xff01; 據統計…

tp8 使用rabbitMQ(1)簡單隊列

php8.0 使用 rabbitmq 要使用 3.6版本以上的&#xff0c; 并且還要開啟 php.ini中的 socket 擴展 php think make:command SimpleMQProduce //創建一個生產者命令行 php think make:command SimpleMQConsumer //創建一個消費者命令行 代碼中的消息持久化的說明 RabbitMQ 消息持…

#Js篇:var、let和 const

var 聲明的變量具有函數作用域或者全局作用域&#xff1b;存在變量提升&#xff0c;即在執行上下文中&#xff0c;變量會被提升到函數或全局作用域的頂部&#xff0c;但初始化的賦值不會提升&#xff1b;可以重復聲明同一個變量不會報錯&#xff1b;可以被重新賦值&#xff1b…

vue3 + Ant Design Vue國際化,組件默認顯示中文

官網 寫入App.vue <template><ConfigProvider :locale"zhCN"><router-view :key"$route.fullPath"></router-view></ConfigProvider> </template><script setup> import { ConfigProvider } from "ant-de…

某上市證券公司:管控文件交換行為 保護核心數據資產

客戶簡介 某上市證券公司成立于2001年&#xff0c;經營范圍包括&#xff1a;證券經紀、證券投資咨詢、證券承銷與保薦、證券自營等。經過多年發展&#xff0c;在北京、上海、深圳、重慶、杭州、廈門等國內主要中心城市及甘肅省內各地市設立了15家分公司和80余家證券營業部。20…

軟文推廣中如何提煉好產品賣點,媒介盒子分享

內容同質化的時代下&#xff0c;企業應該如何讓用戶留下印象&#xff0c;并且成功將產品賣出去&#xff0c;核心思維就在于提煉產品賣點&#xff0c;產品賣點是銷量提升的關鍵&#xff0c;相信企業在推廣產品時都會有點困惑&#xff0c;感覺自家產品和競品比起來只是logo、外觀…

壓縮與解壓縮

核心接口 Compressor package com.xxx.arch.mw.nbp.common.csp;import com.xxx.arch.mw.nbp.common.constant.CommonConstants; import com.xxx.arch.mw.nbp.common.exception.NbpException;import static com.xxx.arch.mw.nbp.common.csp.CompressorEnum.ZSTD;/*** */ publi…

【mybatis】使用<foreach>報錯parameter ‘id‘ not found

程序其他sql都執行正常&#xff0c;也寫了param注解&#xff0c;但是還是一直報parameter ‘id’ not found。最后發現是調用sql的實現類里ids的入參對象名稱不叫ids&#xff0c;叫idList 代碼如下&#xff1a; List<Map<String,String>> resultmapper.sql(date,…

【攻防世界-misc】pure_color

1.方法一&#xff1a;用畫圖工具打開圖片&#xff0c;將圖片拷貝至虛擬機win7桌面&#xff0c; 點“屬性”&#xff0c;顏色設置為“黑白”&#xff0c; 出現flag值。 2.方法二&#xff1a;使用Stegsilve打開&#xff0c;分析圖片 將圖片打開&#xff0c;按左右鍵查找&#xff…

c#數據庫:vs2022 加入mysql數據源

網上有VS2019連接MySQL數據庫的&#xff0c;那么VS2022&#xff0c;VS2023如果和連接到mysql數據庫呢&#xff0c;這里總結一下我的經歷&#xff1a; 1、首先下載ODBC驅動安裝包 當前下載地址&#xff1a;https://dev.mysql.com/downloads/connector/odbc/ 2、ODBC安裝 下載完…

openGauss學習筆記-131 openGauss 數據庫運維-啟停openGauss

文章目錄 openGauss學習筆記-131 openGauss 數據庫運維-啟停openGauss131.1 啟動openGauss131.2 停止openGauss131.3 示例131.3.1 啟動openGauss131.3.2 停止openGauss 131.4 錯誤排查 openGauss學習筆記-131 openGauss 數據庫運維-啟停openGauss 131.1 啟動openGauss 以操作系…

【ChatGLM3-6B】Docker下快速部署

【ChatGLM2-6B】小白入門及Docker下部署 前提下載安裝包網盤地址 開始安裝加載鏡像啟動鏡像進入容器啟動模型交互頁面訪問頁面地址 前提 安裝好了docker安裝好了NVIDIA顯卡16G 下載安裝包 網盤地址 ? 這里因為網盤上傳文件有大小限制&#xff0c;所以使用了分卷壓縮的方式…

【深度學習】CNN中pooling層的作用

1、pooling是在卷積網絡&#xff08;CNN&#xff09;中一般在卷積層&#xff08;conv&#xff09;之后使用的特征提取層&#xff0c;使用pooling技術將卷積層后得到的小鄰域內的特征點整合得到新的特征。一方面防止無用參數增加時間復雜度&#xff0c;一方面增加了特征的整合度…

MySql數據庫常用指令(一)

MySql數據庫常用指令&#xff08;一&#xff09; 一、MySQL 創建數據庫二、MySQL 刪除數據庫三、選擇數據庫四、選擇數據庫五、創建數據表六、刪除數據表七、插入數據八、查詢數據 注&#xff1a;文中TEST為測試所用數據庫&#xff0c;根據實際應用修改 一、MySQL 創建數據庫 …

JVM中如何實現垃圾收集

Java虛擬機&#xff08;JVM&#xff09;使用垃圾收集器&#xff08;Garbage Collector&#xff09;來管理內存&#xff0c;清理不再使用的對象以釋放內存空間。垃圾收集的主要目標是自動化內存管理&#xff0c;使開發人員無需顯式地釋放不再使用的內存&#xff0c;從而降低了內…

Mysql面經

Select語句的執行順序 1、from 子句組裝來自不同數據源的數據&#xff1b; 2、where 子句基于指定的條件對記錄行進行篩選&#xff1b; 3、group by 子句將數據劃分為多個分組&#xff1b; 4、使用聚集函數進行計算&#xff1b;AVG() SUM() MAX() MIN() COUNT() 5、使用 havin…