演算法導論16 1

2021-05-26 19:54:51 字數 2066 閱讀 9013

又是一道動態規劃的題,真的類似於0-1揹包問題.在提示之下解決了,總算是解決了.雖然沒費多少勁.

這個東西,沒有用物件導向的方式寫.體驗了一把,結構化.對於引數傳遞,共享資料,的確不及類方便.

這種問題的狀態轉移方程,沒有寫對.我找錯了狀態.這段時間看《**大全》,感覺自己的**風格有所好轉.雖然覺得過去的也不錯,但是也沒有現在的好.

再說下問題的實質吧:給定硬幣的面值集合與總錢數,給出最少硬幣數的找錢組合.

真的,寫出來之後,不想說太多了.帖吧.

//	ita16-1.cpp -- 2011-07-19-18.00

#include "stdafx.h"

#include #include typedef int kindofcoin ;

const int ksize = 3 ;

const int infinity = ~(1 << 31) ;

kindofcoin * g_kindrecord = null ;

int g_krsize ;

int minnumberofcoins (const int summoney, const kindofcoin * const kind, const int ksize) ;

void insertionsort (kindofcoin * const kind, const int ksize) ;

int indexofdenominationinkind (const kindofcoin * const kind, const int ksize, const kindofcoin denomination) ;

void printusedcions (kindofcoin * const kind, const int ksize) ;

void initializeglobalvalue (const int summoney) ;

void freeglobalvalue (void) ;

int _tmain(int argc, _tchar* argv)

; int summoney = 50 ;

std ::cout << "number of icons: " << minnumberofcoins(summoney, kind, ksize) << std ::endl ;

printusedcions(kind, ksize) ;

freeglobalvalue() ;

return 0 ;

}int minnumberofcoins (const int summoney, const kindofcoin * const kind, const int ksize)

} }int minnumberoficons = minnum[summoney] ;

delete minnum ;

return minnumberoficons ;

}void insertionsort (kindofcoin * const kind, const int ksize)

else

break ;

} kind[j] = temp ; }}

int indexofdenominationinkind (const kindofcoin * const kind, const int ksize, const kindofcoin denomination)

// else error

assert(0) ;

}void printusedcions (kindofcoin * const kind, const int ksize)

// print

for (int i = ksize - 1; i >= 0; --i)

delete numrecord ;

}void initializeglobalvalue (const int summoney)

for (int i = 0; i < g_krsize; ++i)

g_kindrecord[i] = 0 ;

}void freeglobalvalue (void)

演算法導論 16 1 活動選擇(貪心演算法)

最優化問題的演算法往往都包含一系列的步驟,每個步驟都要做出最優化的選擇 相對全域性來說也是最優的 貪心演算法所做的選擇看起來是當前最佳的,相對於區域性來講是最佳的,相對於全域性來講並不是最佳的 貪心演算法希望通過區域性的最優解得到乙個全域性最優解 注意 貪心演算法有時候你能夠產生全域性最優解,有時候...

《演算法導論》筆記 第16章 16 1 活動選擇問題

n個活動組成的集合s 每個活動ai有個開始時間si和結束時間fi,且0 si如果區間 si,fi 和 sj,fj 互不重疊,稱活動ai和aj是相容的。活動選擇問題的最優子結構 sij akj 整個問題的最優解也是s 的乙個解。乙個遞迴解 將動態規劃解轉為貪心解 對於任意非空子問題sij,設am是si...

挑戰程式設計競賽 1 61 nlogn演算法

問題如下 ok,這道題非常簡單,樸素演算法我就不說了,書上也給出了樸素o n 3 的 但是同時也告訴我們還有更高效的演算法,我當時琢磨了一下,排序,確定其中兩個再用二分查詢可以的到乙個o n 2logn 的演算法,但是同樣不高效。然後,然後.我發現這道題居然是一道貪心.怎麼貪呢?如下 include...