資料結構與演算法之貪心演算法 C++實現,資料結構與演算法貪心

來源:互聯網
上載者:User

資料結構與演算法之貪心演算法 C++實現,資料結構與演算法貪心
1、基本思路:從問題的某一個初始解觸發逐步逼近給定的目標,以儘可能快的求得更好的解。當達到演算法中某一步不能再繼續前進時,就停止演算法,給出近似值。也就是說貪心演算法並不從整體最優考慮,它所作出的選擇只是在某種意義上的局部最優選擇。存在的問題:1、不能保證最後的解是最優的;2、不能用來求最大或最小解的問題;3、只能求滿足某些約束條件的可行解的範圍。實現過程:    從問題的某一初始解出發;    while (能朝給定總目標前進一步)    {           利用可行的決策,求出可行解的一個解元素;    }    由所有解元素組合成問題的一個可行解;貪心演算法的基本要素:(對於一個具體的問題,怎麼知道是否可用貪心演算法解此問題)(1)、貪心選擇性質  所謂貪心選擇性質是指所求問題的整體最優解可以通過一系列局部最優的選擇,換句話說,當考慮做何種選擇的時候,我們只考慮對當前問題最佳的選擇而不考慮子問題的結果。這是貪心演算法可行的第一個基本要素。對於一個具體問題,要確定它是否具有貪心選擇性質,必須證明每一步所作的貪心選擇最終導致問題的整體最優解。(2)、最優子結構性質當一個問題的最優解包含其子問題的最優解時,稱此問題具有最優子結構性質。問題的最優子結構性質是該問題可用貪心演算法求解的關鍵特徵。執行個體:換零錢人民幣100、50、20、10、5、1、0.5、0.2、01多種紙幣。將一定數額的錢數用不能面額組合起來。代碼:

#include<iostream>const int SIZE = 9;int coin[SIZE] = {10000, 5000, 2000, 1000, 500, 100, 50, 20, 10};int num[SIZE];int exchange(int n);int main(){    using namespace std;    double money;    string name[SIZE] = {"一百元", "五十元", "二十元", "十元", "5元", "1元", "5角", "2角", "1角"};    cout << "請輸入金額:";    cin >> money;    int n = (int)(money*100);    exchange(n);    for(int i=0; i<SIZE; i++)    {        cout << name[i] << "幣種: " << num[i] << " 張\n";    }    return 0;}int exchange(int n){   int i;    for (i=0; i<SIZE; i++)        if (n >= coin[i]) break;    while (n>0 && i<SIZE)    {        if(n >= coin[i])        {            n -= coin[i];            num[i]++;        }else if(n<10 && n>=5)        {            num[SIZE-1]++;            break;        }else i++;    }    return 0;}
運行結果:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.