貪心演算法比較侷限,因為在決策上存在分歧,還有待證明,但是和動態規劃的思想一樣,都是從區域性最優解到整體最優解
今天講一下貪心演算法可以解決的其中乙個問題------找錢問題
首先說說一下思路,也就是核心演算法
找錢的規則是盡可能少的紙幣數找齊,找不齊就說「找不齊」,找齊就輸出找錢的方法和紙幣張數,每張紙幣的張數有限
首先要有最少張數,必須先用大錢找零,生活中就是這樣的嘛,所以要排序,(給定的直接有序就不用了)因為面額張數有限,所以要用下min函式,
min
(trans/a[i]
.money,a[i]
.number)
;
這個min函式的意思是,如果需要的張數不超過給定張數那必須是最小的那個數呀,反之min出來的就是指定的張數了哦
好了解釋的就這麼多,上**
//貪心演算法之找錢問題
#include
using
namespace std;
struct node
a[99];
bool
down
(node x,node y)
intmain()
if(trans)
cout<<
"找不開"
;else
return0;
}
執行結果
沒聽懂?快來找博主(qq3100310659(備註:c++學習,否則不給通過哦,博主就是這麼傲嬌));
程式設計師必備十大演算法 最短路徑(1)
最短路徑的演算法大致可以分為三種,不過每一種的演算法都有所不同 在時間複雜度 空間複雜度 負權 有負權的邊 是否可以檢驗有沒有負權或者帶負權的邊 這個演算法比較簡單,暴力解決,時間複雜度為pow n,3 空間複雜度為pow n,2 可以處理負權和帶負權邊的演算法 最短路徑 1 include usi...
大廠程式設計師必備十大基礎演算法 KMP演算法
字串匹配問題 有乙個字串 str1 010101010101010010101010101 和乙個子串 str2 0101010100 現在要判斷 str1 是否含有 str2,如果存在,就返回第一次出現的位置,如果沒有,則返回 1 如果用暴力匹配的思路,並假設現在 str1 匹配到 i 位置,子串...
程式設計師必備十大演算法3 歸併排序
十大演算法之歸併排序首先要有分治的思想 歸併排序的過程 1 建立歸併函式入口mergesort a,n a是陣列a,n為陣列長度 入口中要有乙個動態分配陣列,長度為n int malloc nsizeof int 2 建立乙個msort函式msort a,arr,0,n 1 用來做二分0和n 1就是...