Go 語言程式:查詢湊成指定金額所需的最小硬幣數量


在這篇 Go 語言文章中,我們將探討如何找到在給定一系列不同面值的硬幣的情況下,湊成指定金額所需的最小硬幣數量。我們可以使用貪心演算法來解決這個問題。

演算法

  • 步驟 1 − 首先,我們需要匯入 fmt 包。

  • 步驟 2 − 然後建立一個名為 minCoins() 的函式,用於計算最小硬幣數量。該函式接受兩個引數:一個包含硬幣數量的整數陣列,以及需要湊成的金額。

  • 步驟 3 − 在函式內部,將所需的硬幣數量初始化為 0。

  • 步驟 4 − 逆序遍歷硬幣陣列。當剩餘金額大於或等於當前硬幣時,從剩餘金額中減去硬幣值,並將所需的硬幣數量加 1。

  • 步驟 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 語言程式,用於查詢湊成指定金額所需的最小硬幣數量。我們在這裡使用了貪心演算法來實現結果。該演算法基於始終為剩餘金額選擇儘可能大的硬幣面值,這對於大多數貨幣中使用的標準硬幣面值非常有效。但是,需要注意的是,貪心演算法並不總是最優的,在某些情況下(例如硬幣面值不標準或遵循特定模式),它可能無法提供所需的最小硬幣數量。

更新於: 2023年4月5日

235 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告

© . All rights reserved.