又是一道動態規劃的題,真的類似於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)
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...