案例要求:
今有面值为 1、5、11 元的硬币各无限枚。想要凑出 n 元,问需要的最少硬币数量。
样例:
输入一个正整数n为15,输出3
样例解释:
对于样例数据 1,最佳方案是 15=5+5+5,使用到 3 枚硬币
import java.util.Scanner;
//硬币问题的运算
public class 硬币问题 {
public static void main(String[] args) {
int b=5;
int c=11;
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个正整数:");
int d=sc.nextInt();
if(d%c==0){ //起初从最大除数开始,若整除,则输出值商为硬币最小值
System.out.println(d/c);
} else if (d%c>0){ //若无法整除则执行下一步判断
if (d%c<5) { //判断若输入的值除以11的余数是否小于5
System.out.println(d/c+d%c%b); //输出除以11的整数部分加上余数部分为硬币最小值
} else if (d%c%b==0) { //判断输入值除以11的余数除以5的余数是否为零
System.out.println(d/c+d%c/b); //输出除以11整数部分加除以11的余除5
} else if(d%c%b >=1){ //判断若输入值除以11的余数除以5的余数大于1
System.out.println(d/c+d%c/b+d%c%b); //输出除以11整数部分+除以11的余数除以5整数部分+除以11的余数除以5的余数
}else if(d%b==0){ //判断输入值是否可以被5整除
System.out.println(d/b);
}else{ //若不满足以上所有条件则说明输入值只能被1整除
System.out.println(d%c%b);
}
}
}
}