本文共 697 字,大约阅读时间需要 2 分钟。
第一题 不同面额货币购物问题 题目:用最少数量的货币买价格为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,和商品加价格mint 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;}}
转载地址:http://zgzsi.baihongyu.com/