java版,用最少數量的貨幣買價格爲m的商品,最大貨幣面額爲1,2,3....最大面額n

第一題 不同面額貨幣購物問題
題目:用最少數量的貨幣買價格爲m的商品,最大貨幣面額爲1,2,3....最大面額n
測試樣例: //面額最大爲4塊的貨幣買18元的商品,用了5個貨幣
輸入: 4 18
輸出:5

解題思路:m/n的除數就是貨幣數,定義一個count做累加。然後將餘數賦值給m,繼續m/n到m==0,但是n最大面額值變下一個n--

import java.util.Scanner;

public class Test1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 輸入最大面額n,和商品加價格m
int n = scanner.nextInt();
int m = scanner.nextInt();
int price = function(n,m);
System.out.println(price);
}

public static int function(int n,int m) {
// 如果最大面額n已經大於商品價格m時,直接用一個最大面額的貨幣就行
if (n >= m) {
return 1;
}
// 支付的硬幣數量
int count = 0;
while (m != 0) {
// 如果價格m是很多倍的最大面額n,比如18/4=4餘2,先把4複製給count,
// 就是餘數繼續除以下一個面額,直到餘數爲0,跳出循環
count += m / n;
m = m % n;
// 最大面額減一再進入循環,就是用下一面額值
n--;
}
return count;
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章