最少凑钱数: 题目我就不说了。
直接来代码:
这个是一次测试,如果按照题目要求多次输入,那在最外层加个对a的循环就可以了,我在这个为了调试方便 ,注释了。
import java.util.Arrays;
import java.util.Scanner;
public class _92 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a=0; //凑的钱数
int b; //货币个数
int[] count; //存储货币的数组
//while(a==0) {
Scanner sc=new Scanner(System.in);
a=sc.nextInt(); ///接收M
b=sc.nextInt(); ///共有多少个数
count=new int[b];
for(int i=0;i<b;i++) {
count[i]=sc.nextInt(); 将数放入数组
}
Arrays.sort(count);
//思路 用M%数组第一个数,如果能出尽 那便是最少的个数,不能出尽,求余数,除下一个数。
boolean d=false;
int i=count.length-1; //循环 控制 i
int abc=0; //计数
int sum=0;
int ccc=-1; //余数
for(int j=i`这里写代码片`;j>=0;j--) {
if(a>=count[j]) { //判断凑钱数 和 数组中的数对比
abc=abc+a/count[j]; //个数
//sum=sum+abc*count[j];
ccc=a%count[j]; //重新凑钱
a=ccc;
}
}
//if(sum=)
if(abc!=0&&ccc==0) { //判断最后余数是否为0 和abc 是否为0
System.out.println(abc);
}else {
System.out.println("Impossible");
//}
}
//
// while(!d&&i>=0) { //d 控制循环
// if(a>count[i]) { //如果 输入的数大于数组的数
// ccc=a%count[i];
// abc+=(a/count[i]);
// System.out.println(a/count[i]);
// a=ccc;
//
// }
// i--;
// if(ccc==0) { //好像控制结束循环的时候还需要一个变量:
// d=false;
// }
if(i==-1) {
// abc=0;
// break;
// }
}
// }
}
//}
请尊重原创:转发或者分享,请标明出处