找錢問題 不知道能不能在這邊問~ - 推理遊戲

Donna avatar
By Donna
at 2007-04-18T02:14

Table of Contents

實際程式化的話是這樣,以{25, 20, 10, 5, 1}來說:

// 隔這個define去取data[a]的值只不過預防取到a < 0,其中MAX_INT是個很大的值
// ,使得如果取到a < 0時給出很大的值,就會直接被min捨棄掉
#define DATA(a) ((a >= 0) ? (data[a]) : (MAX_INT))

// 價值0時用的硬幣數為0
data[0] = 0;
// 從價值1開始跑到MAX_NUM
for(i = 1; i < MAX_NUM; i++)
{
// 某價值所需最少硬幣,就是扣掉各個幣值後的各個價值中,選用幣數最少的那個
// 加上1
data[i] = 1 + min(DATA(i - 25), DATA(i - 20), DATA(i - 10), DATA(i - 5),
DATA(i - 1));
}

主程式這樣就搞定了,跑完data[x]就是代表x這個價值需要多少硬幣。

令m為錢幣種類數、n為要算的最大價值的話,這程式時間複雜度是O(mn),會遠
比用多層迴圈硬幹的O(n^m)好上太多。

--
「去質疑親眼所見的事是最愚昧的行為。這又分為兩種--質疑自己所見是不是
真的,或是用見到的事去質疑沒見到的事。呵。」

--芙莉雅,謊言事務所實現使者

--

All Comments

Donna avatar
By Donna
at 2007-04-19T00:27
專業的來了,我看不懂 XD
Kyle avatar
By Kyle
at 2007-04-20T09:31
補加上註解說明了。
Belly avatar
By Belly
at 2007-04-22T08:48
雖然我不是資工系的 但我已經有點了解 感謝大大們的回答딠
Skylar DavisLinda avatar
By Skylar DavisLinda
at 2007-04-26T17:43
你不是資工系的還要寫資工作業? 跑去修資工的課?
Gilbert avatar
By Gilbert
at 2007-04-29T10:10
請問簽名檔的由來?
Iris avatar
By Iris
at 2007-05-04T02:38
我是生科系的 這是資工系開的生物資訊課程~
Hamiltion avatar
By Hamiltion
at 2007-05-05T01:47
簽名檔是自己的作品XD
Elizabeth avatar
By Elizabeth
at 2007-05-08T15:16
看原Po的簽名檔就知道你沒有研究魔術XD
Irma avatar
By Irma
at 2007-05-08T22:41
好奇學過魔術的人會怎麼改寫這句話?

找錢問題 不知道能不能在這邊問~

Carolina Franco avatar
By Carolina Franco
at 2007-04-18T00:58
※ 引述《weiluner (遊戲人間^^y)》之銘言: : 我們有想到這個方法 : 但是如果幣值是25.11.5.1 也符合上面的條件 : 找33元 只需3個11元硬幣 : 但卻需要1個25元 1個5元 3個1元 : 這樣是不是要用上述方法 還需要一些特殊條件呢? 嗯,我沒想/講清楚。我講的部分是 ...

找錢問題 不知道能不能在這邊問~

Elma avatar
By Elma
at 2007-04-17T23:51
※ 引述《weiluner (遊戲人間^^y)》之銘言: : ※ 引述《ddavid (星舞絃獨角獸神話憶)》之銘言: : 對不起 可能我寫的不夠清楚 : 第一個問題的前提是只有第一種幣值情形下 : 要如何證明用上述方式就可以找到最小硬幣數(其實等同第二個問題拉~) : : 原因是,第一種幣值的情況, ...

找錢問題 不知道能不能在這邊問~

Wallis avatar
By Wallis
at 2007-04-17T12:38
※ 引述《ddavid (星舞絃獨角獸神話憶)》之銘言: : ※ 引述《weiluner (遊戲人間^^y)》之銘言: : : 店員有25元、10元、5元、1元的幣值 : : 我想問的是 : : 如果要找出一種銅板總數目最小的方法 : : 這種把要找錢的數目先從大的幣值除 : : 所得餘數再由第二小的幣值一直 ...

找錢問題 不知道能不能在這邊問~

Kelly avatar
By Kelly
at 2007-04-17T03:49
※ 引述《weiluner (遊戲人間^^y)》之銘言: : 店員有25元、10元、5元、1元的幣值 : 我想問的是 : 如果要找出一種銅板總數目最小的方法 : 這種把要找錢的數目先從大的幣值除 : 所得餘數再由第二小的幣值一直除下來的方法能夠通用在所有的錢數嗎 : 如果可以 要如何證明呢? : 如果今天我們 ...

找錢問題 不知道能不能在這邊問~

Jacky avatar
By Jacky
at 2007-04-17T00:07
最近遇到一個問題 因為一直想不出要怎麼解決 爬文似乎也沒有類似的問題 不知道PO在這會不會很奇怪 希望板上大大能給一些想法 店員有25元、10元、5元、1元的幣值 要找77元給顧客,方法有很多種 其中一種找錢的方法是先把77除以25整數為3 餘數2再除以10以及5整數皆為0 2除以1整數為2 如此一來 我們 ...