首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java 找零問題:輸入應發工資,輸出鈔票張數最少的發放方案

     編輯:程式設計疑難解答

問題描述

給定一筆應發工資金額,需計算使用 100、50、20、10、5、1 元面額鈔票,使總張數最少的組合方案。這是典型的「貪心演算法」應用場景。

核心邏輯:貪心策略

從最大面額開始嘗試,盡可能多用大面額,再依序處理較小面額,即可保證總張數最少(前提是鈔票面額系統具備標準貨幣特性)。

關鍵程式碼片段:個位數處理

switch (yuan) {
    case 1: num = 1; break;
    case 2: num = 2; break;
    case 3: num = 3; break;
    case 4: num = 4; break;
    case 5: num = 1; break;  // 直接用 1 張 5 元
    case 6: num = 2; break;  // 1 張 5 元 + 1 張 1 元
    case 7: num = 3; break;
    case 8: num = 4; break;
    case 9: num = 5; break;  // 1 張 5 元 + 4 張 1 元
}

完整解法需依序處理百位、十位、個位,或使用迴圈遍歷面額陣列 {100, 50, 20, 10, 5, 1} 進行整除與取餘運算。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved