プログラミングコンテストチャレンジブック(2-2) 「できるだけ少ない数の硬貨で支払うには?」というよくある問題。minとかmaxが見当たらなかったので自分で定義した。 package main import "fmt" func min(i,j int) int { if i < j { return i } return j } func main() { ans := "" A := 620 coins := [6]int{500,100,50,10,5,1} num := [6]int{2,0,3,1,2,3} for k, coin := range(coins){ t := min(A/coin,num[k]) A -= t * coin ans += fmt.Sprintf("%d: %d ",coin,t) } fmt.Printf("%s\n",ans) }
![GoでGreedy algorithm](https://cdn-ak-scissors.b.st-hatena.com/image/square/e3356803e0ca2fbf81750674b5e9ef63e7a486bc/height=288;version=1;width=512/http%3A%2F%2Fwww.kzfmix.com%2Fimages%2Fogp%2Fogp_logo.jpg)