當(dāng)下,坐公交或者地鐵時(shí)大部分人都是刷卡的。不過,時(shí)至今日還在用現(xiàn)金支付的人還是比想象的多。本題我們以安置在公交上的零錢兌換機(jī)為背景。
這個(gè)機(jī)器可以用紙幣兌換到 10 日元、50 日元、100 日元和 500 日元硬幣的組合,且每種硬幣的數(shù)量都足夠多(因?yàn)楣唤邮艿淖钚☆~度為 10 日元,所以不提供 1 日元和 5 日元的硬幣)。
兌換時(shí),允許機(jī)器兌換出本次支付時(shí)用不到的硬幣。此外,因?yàn)樵诔俗粫r(shí),如果兌換出了大量的零錢會(huì)比較不便,所以只允許機(jī)器最多兌換出 15 枚硬幣。譬如用 1000 日元紙幣兌換時(shí),就不能兌換出“100 枚 10 日元硬幣”的組合( 圖5 )。
問題
求兌換 1000 日元紙幣時(shí)會(huì)出現(xiàn)多少種組合?注意,不計(jì)硬幣兌出的先后順序。
package main
import "fmt"
const (
coin10 = 10
coin50 = 50
coin100 = 100
coin500 = 500
)
func mostCount(money, coinDeno int)int{
mostC := money / coinDeno
if mostC > 15{
return 15
}else{
return mostC
}
}
func main(){
money := 1000
coin10MostCount := mostCount(money, coin10)
coin50MostCount := mostCount(money, coin50)
coin100MostCount := mostCount(money, coin100)
coin500MostCount := mostCount(money, coin500)
n := 0
for a:=0;a<=coin500MostCount;a++ {
for b:=0;b<=coin100MostCount;b++{
for c:=0;c<=coin50MostCount;c++{
for d:=0;d<=coin10MostCount;d++{
if 500*a + 100*b + 50*c + 10*d == money && a + b + c + d <= 15{
fmt.Printf("%d = 500*%2d + 100*%2d + 50*%2d + 10*%2d\n", money, a, b, c, d)
n++
}
}
}
}
}
fmt.Println("共", n, "種組合")
}
結(jié)果:
1000 = 500* 0 + 100* 5 + 50*10 + 10* 0
1000 = 500* 0 + 100* 6 + 50* 8 + 10* 0
1000 = 500* 0 + 100* 7 + 50* 6 + 10* 0
1000 = 500* 0 + 100* 8 + 50* 4 + 10* 0
1000 = 500* 0 + 100* 9 + 50* 1 + 10* 5
1000 = 500* 0 + 100* 9 + 50* 2 + 10* 0
1000 = 500* 0 + 100*10 + 50* 0 + 10* 0
1000 = 500* 1 + 100* 0 + 50* 9 + 10* 5
1000 = 500* 1 + 100* 0 + 50*10 + 10* 0
1000 = 500* 1 + 100* 1 + 50* 7 + 10* 5
1000 = 500* 1 + 100* 1 + 50* 8 + 10* 0
1000 = 500* 1 + 100* 2 + 50* 5 + 10* 5
1000 = 500* 1 + 100* 2 + 50* 6 + 10* 0
1000 = 500* 1 + 100* 3 + 50* 3 + 10* 5
1000 = 500* 1 + 100* 3 + 50* 4 + 10* 0
1000 = 500* 1 + 100* 4 + 50* 0 + 10*10
1000 = 500* 1 + 100* 4 + 50* 1 + 10* 5
1000 = 500* 1 + 100* 4 + 50* 2 + 10* 0
1000 = 500* 1 + 100* 5 + 50* 0 + 10* 0
1000 = 500* 2 + 100* 0 + 50* 0 + 10* 0
共 20 種組合
貌似復(fù)雜,做起來其實(shí)不難,把各種情況都讓計(jì)算機(jī)試一遍就好了。
創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開啟,新人活動(dòng)云服務(wù)器買多久送多久。