貪心演算法的基本思路:
從問題的某一步初始化解出逐步逼近給定的目標,以盡可能快地求得更好的解。當達到演算法中的某一步不能再繼續前進時,就停止演算法,給出近似解。
下面就乙個例子來說明貪心的實現過程:就以乙個換零錢的例子吧,輸入乙個數字的面額,求出用100,50...等等面額怎麼才能換成像對應的錢
#includeusing namespace std;
void tanxin(int a);
int value[10]=;
int num[10]=;
int main()
while(a>0 && i<10)else if(a<10&&i>=5)
else
i++;
}}
通過上面**我們不能看出,貪心演算法的實現過程:
從問題的某一初始化解出發
while是否達到(或者近似達到)設定的目標
求出可行解的乙個解元素
由所有解元素組合成問題的乙個可行解
由此我們不能得出,該演算法存在的一些問題:
1.不能保證最後的解是最優的
2.不能用來求最值問題
3.只能滿足某些約束條件的可行解的範圍
上機筆試之九 貪心演算法 換零錢
換零錢問題也是常考的一種題型。給定乙個數,將其換成最少數量的零錢。如下 include using namespace std void main i 0 while 1 printf times d n left 上機筆試系類教程 上級筆試之一 資料輸入 上機筆試之二 氣泡排序 上機筆試之三 快速...
換零錢的演算法
問題來自sicp,描述如下 現在若干紙幣,想要兌換成硬幣。硬幣面值有1,5,10,25,50分的硬幣。什麼,沒有25分的,我說的是美元。問有多少種組合方式 這是介紹線性遞迴這個概念的時候的乙個例子,很有意思。演算法嘛,很樸素啊,其主要思想如下 scheme的 就不貼上來了,太簡單太抽象。我們還是用c...
換零錢 見解
n元錢換為零錢,有多少不同的換法?幣值包括1 2 5分,1 2 5角,1 2 5 10 20 50 100元。例如 5分錢換為零錢,有以下4種換法 1 5個1分 2 1個2分3個1分 3 2個2分1個1分 4 1個5分 由於結果可能會很大,輸出mod 10 9 7的結果 input 輸入1個數n,n...