ACM程序设计大赛-------- 最少钱币数(Java代码)
来源:互联网 发布:矢量图编辑软件 编辑:程序博客网 时间:2024/06/11 06:52
【问题描述】
这是一个古老而又经典的问题。用给定的几种钱币凑成某个钱数,一般而言有多种方式。例如:给定了6种钱币面值为2、5、10、20、50、100,用来凑 15元,可以用5个2元、1个5元,或者3个5元,或者1个5元、1个10元,等等。显然,最少需要2个钱币才能凑成15元。
你的任务就是,给定若干个互不相同的钱币面值,编程计算,最少需要多少个钱币才能凑成某个给出的钱数。
这是一个古老而又经典的问题。用给定的几种钱币凑成某个钱数,一般而言有多种方式。例如:给定了6种钱币面值为2、5、10、20、50、100,用来凑 15元,可以用5个2元、1个5元,或者3个5元,或者1个5元、1个10元,等等。显然,最少需要2个钱币才能凑成15元。
你的任务就是,给定若干个互不相同的钱币面值,编程计算,最少需要多少个钱币才能凑成某个给出的钱数。
【要求】
【数据输入】
输入可以有多个测试用例。每个测试用例的第一行是待凑的钱数值M(1 <= M <= 2000,整数),接着的一行中,第一个整数K(1 <= K <= 10)表示币种个数,随后是K个互不相同的钱币面值Ki(1 <= Ki <= 1000)。输入M=0时结束。
【数据输出】
每个测试用例输出一行,即凑成钱数值M最少需要的钱币个数。如果凑钱失败,输出“Impossible”。你可以假设,每种待凑钱币的数量是无限多的。
【样例输入】
15
6 2 5 10 20 50 100
1
1 2
0
【样例输出】 2Impossible
import java.util.ArrayList;import java.util.Collections;import java.util.List;import java.util.Scanner;public class ACM {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubScanner scan=new Scanner(System.in);List<Integer> result=new ArrayList<Integer>();int typeNum=0;int money=0;boolean isOK=true;System.out.println("请输入一个待凑钱币,输入0结束");while(isOK){try {money=scan.nextInt();isOK=false;} catch (Exception e) {// TODO: handle exceptionSystem.out.println("输入有误,请重新输入一个正整数");isOK=true;}}while(money!=0){int count=0;System.out.println("请输入货比种类数");isOK=true;while(isOK){try {typeNum=scan.nextInt();isOK=false;} catch (Exception e) {// TODO: handle exceptionSystem.out.println("输入有误,请重新输入一个正整数");isOK=true;}}int[] type=new int[typeNum];System.out.println("请输入货币面值");for (int i = 0; i < type.length; i++) {type[i]=scan.nextInt();} type=reverse(type);for (int i = 0; i < type.length; i++) {while(money/type[i]!=0){money-=type[i];count++;}}result.add(count);System.out.println("请输入一个待凑钱币,输入0结束");isOK=true;while(isOK){try {money=scan.nextInt();isOK=false;} catch (Exception e) {// TODO: handle exceptionSystem.out.println("输入有误,请重新输入一个正整数");isOK=true;}}} for (int i = 0; i < result.size(); i++) { if(result.get(i).intValue()==0){ System.out.println("Impossible "); }else{ System.out.println(result.get(i).intValue()); } }} public static int[] reverse(int[] arr) {int temp=0;for (int i = 0; i < arr.length; i++) {for (int j = i; j < arr.length; j++) {if(arr[i]<arr[j]){temp=arr[i];arr[i]=arr[j];arr[j]=temp;}}}return arr;}}
0 0
- ACM程序设计大赛-------- 最少钱币数(Java代码)
- 最少钱币数
- 最少钱币数
- 最少钱币数
- 1031: 最少钱币数
- 问题 : 最少钱币数
- nyoj 1238 最少换乘 (河南省第八届acm程序设计大赛)
- 最少钱币数梦幻王国
- ACM动态规划之最少钱币问题
- 计算最少钱币数C++程序代码。
- ACM程序设计大赛简介
- ACM程序设计大赛概况
- ACM东北地区程序设计大赛
- ACM最少步数
- 最少换乘 第八届河南省程序设计大赛
- ACM-Money(兑换钱币)
- CCF-训练50题-NO.29-最少钱币数
- 【南阳acm】最少步数
- OJ第二批——Problem F:统计程序设计基础课程学生的平均成绩
- Tomcat无法启动org.eclipse.jst.jee.server:xxx' did not find a matching property
- IOS如何以兼容模式运行在iphone4、5、6的屏幕上
- 打造android万能上拉下拉刷新框架——XRefreshView (二)
- 码农三年,年记
- ACM程序设计大赛-------- 最少钱币数(Java代码)
- Web调用安卓,苹果手机摄像头,本地图片和文件
- Linux伙伴系统(一)--伙伴系统的概述
- 算法导论2.1-3——线性查找
- 进程的概念与创建方式
- 一个很有用的iPhone文件处理代码库(低内存XMLParser,低内存下载文件等等,内详)
- 作业6.14
- linux上使用命令制作u盘启动盘
- OJ第二批——Problem G:驾驭const