package main
/**
* 最少货币数
* @param arr int整型一维数组 the array
* @param aim int整型 the target
* @return int整型
*/
func minMoney( arr []int , aim int ) int {
if aim==0{return 0}
// dp[n]=dp[n-m]+1
dp:=make([]int,aim+1)
for i:=0;i<len(arr);i++{
if aim>arr[i]{
dp[arr[i]]=1
}
}
for i:=1;i<=aim;i++{
for j:=0;j<len(arr);j++{
money:=arr[j]
if i>=arr[j]{
pre:=dp[i-money]
if pre==0{
continue
}else if dp[i]==0{
dp[i]=pre+1
}else if dp[i]!=0{
dp[i]=min(pre+1,dp[i])
}
}
}
}
if dp[aim]==0{
return -1
}else{
return dp[aim]
}
}
func min(a,b int)int{
if a<b{return a}
return b
}