算法设计与分析: 4-11 硬币找钱问题

本文介绍了一种使用贪心算法解决硬币找钱问题的方法,特别是当有6种不同面值的硬币(5分,1角,2角,5角,1元,2元)时如何找到最少硬币组合来支付购物款项。通过实例说明了如何在不同情况下优化硬币使用数量,给出数据输入和输出的描述,并引用了王晓东《计算机算法设计与分析》的相关内容作为参考。
摘要由CSDN通过智能技术生成

4-11 硬币找钱问题


问题描述

设有 6 种不同面值的硬币,各硬币的面值分别为 5 分,1 角,2 角,5 角,1 元,2 元。 现要用这些面值的硬币来购物和找钱。购物时可以使用的各种面值的硬币个数存于数组 Coins[1:6]中,商店里各面值的硬币有足够多。在 1 次购物中希望使用最少硬币个数。
例如,1 次购物需要付款 0.55 元,没有 5 角的硬币,只好用 2*20+10+5 共 4 枚硬币来 付款。如果付出 1 元,找回 4 角 5 分,同样需要 4 枚硬币。但是如果付出 1.05 元(1 枚 1 元和 1 枚 5 分),找回 5 角,只需要 3 枚硬币。这个方案用的硬币个数最少。

对于给定的各种面值的硬币个数和付款金额,编程计算使用硬币个数最少的交易方案。

数据输入:
每一行有 6 个整数和 1 个有 2 位小数的实数。分别表示可以使用的各种面值的硬币个数和付款金额。


Java

import java.util.Scanner;

public class YingBiZhaoQian {
   

    private static int[] coins = new int[6];
    private static int[] c = {
  5, 10, 20, 50, 100, 200};
    private static int count = 0;
    private static int cost;


    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        while (
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值