使用Golang编写程序,找出使给定金额的最低硬币数量
在这篇Golang文章中,我们将使用贪心算法来查找在给定不同面值硬币列表的情况下,使给定金额所需的最低硬币数量。
算法
- 步骤1 −首先,我们需要导入fmt包。
-
步骤2 −然后创建一个名为minCoins()的函数,用于计算最少硬币数量。 函数接受两个参数,一个是具有硬币数量的整数数组,另一个是要形成的金额。
-
步骤3 −在这个函数内,初始化所需硬币数量为0。
-
步骤4 −以相反的顺序迭代硬币数组。 当剩余金额大于或等于当前硬币时,从剩余金额中减去硬币值,并增加所需的硬币数量。
-
步骤5 −返回所需硬币数量。
-
步骤6 −现在,启动main()函数。 在main()内部,初始化包含硬币的数组,并将要制作的金额存储在一个变量中。
-
步骤7 −调用上面创建的函数,并将硬币数组和金额作为参数传递给它。进一步将结果存储在另一个变量中,并在屏幕上打印出来。
示例
在此示例中,我们将编写一个go语言程序,使用外部用户定义的函数来查找使给定金额的最低硬币数量。
package main
import "fmt"
// function to calculate number of coins
func minCoins(coins []int, amount int) int {
numCoins := 0
for i := len(coins) - 1; i >= 0; i-- {
for amount >= coins[i] {
amount -= coins[i]
numCoins++
}
}
return numCoins
}
func main() {
coins := []int{1, 5, 10, 25}
amount := 57
result := minCoins(coins, amount)
fmt.Printf("Minimum number of coins needed: %d\n", result)
}
输出
Minimum number of coins needed: 5
结论
我们已成功编译并执行go语言程序,找出使给定金额的最低硬币数量。 在这里,我们使用了贪心算法来实现结果。 该算法基于总是选择剩余金额的最大面额硬币,这对于大多数货币中使用的标准硬币面值非常有效。 然而,重要的是要注意,贪心算法并不总是最优的,并且可能在硬币面值不是标准的或遵循特定模式的某些情况下无法提供所需最小硬币数量。