人民币找零钱,返回最少张数

/// <summary>
/// 找零钱,返回人民币总张数
/// </summary>
class MoneyNums
{
  /// <summary>
  /// 定义人民币类别值
  /// </summary>
  private decimal[] RMB = { 100, 50, 20, 10, 5, 1, 0.5m, 0.1m };

/// <summary>
/// 找零钱,返回人民币总张数
/// </summary>
/// <param name="retval">找零总值</param>
/// <returns>返回张数</returns>
public int GetNums(decimal retval)
{
  int Nums = 0;
  if (retval > 0)
  {
    for (int i = 0; i < RMB.Length; i++)
    {
      while (retval >= RMB[i])
      {
        retval -= RMB[i];
        Nums++;

        Console.WriteLine(RMB[i]);
      }
    }
  }

  return Nums;
  }
}

时间: 2024-08-06 15:40:11

人民币找零钱,返回最少张数的相关文章

算法笔记——硬币找零之最少硬币数

题目来源:NYOJ995 问题描述: 在现实生活中,我们经常遇到硬币找零的问题,例如,在发工资时,财务人员就需要计算最少的找零硬币数,以便他们能从银行拿回最少的硬币数,并保证能用这些硬币发工资. 我们应该注意到,人民币的硬币系统是 100,50,20,10,5,2,1,0.5,0.2,0.1,0.05, 0.02,0.01 元,采用这些硬币我们可以对任何一个工资数用贪心算法求出其最少硬币数. 但不幸的是: 我们可能没有这样一种好的硬币系统, 因此用贪心算法不能求出最少的硬币数,甚至有些金钱总数还

(原)关于人民币找零钱的问题

引用请注明出处:http://www.cnblogs.com/lihaiping/p/7799495.html 最近项目开发中遇到一个和找零钱很相似的问题,所以网上搜索了一下,大部分的问题,都是关于如何求出找零钱的方法数(有多少种找零的方法)和如何求少找零的方案. 但我这次的问题,需要在求出找零钱方法数的同时还需要求出这些方法中的每种具体找零方法. 根据网上的代码,求找零方法数种类:(动态规划的算法) 1 int countWays(vector<int> changes, int n, in

奇妙的算法【9】每个小孩的糖果数,找公约数,最少硬币数

1,每个小孩的糖果数量是多少 有p个小孩,c个糖果,刚开始第1个小孩发一个糖果,第2个小孩发两个糖果,第p个小孩发p个糖果,如果糖果没有发完,就接着[注意]第1个小孩发p+1个糖果.....第p个小孩发2*p个糖果,如果糖果还没有发完,就继续下一轮,第1个小孩发2*p+1个糖果,... 方法一,遍历[这种方法太low了就折叠一下] package com.cnblogs.mufasa.Main1; import java.util.Scanner; public class Main { pub

java-每位顾客付款后给出找零钱的最佳组合

假设商店货品价格(R) 都不大于100元(且为整数),若顾客付款(P)在100元内,现有一个程序能在每位顾客付款后给出找零钱的最佳组合(找给顾客货币张数最少). 假定此商店的货币面值只包括:50元(N50).10元(N10). 5元(N5).1元(N1) 四种. 下面为程序的代码: /************************************************************    Copyright (C), 1988-1999, Huawei Tech. Co.,

找零钱——贪心

找零钱? 有 100 元.50 元.20 元.10 元.5 元和 1 元这些面值的钱? 求凑出 ?? 元的最多张数和最少张数,要求第 ?? 种面值的钱不能用超过 ???? 张? 多组询问,?? ≤ 10^5, ????, ?? ≤ 10^9 题解: 其实我们只要知道最少张数即可. 最大=凑出∑ai-x的最小方案数.max=n-min 发现,如果没有20,那么剩下的100/50/10/5/1成倍数关系可以直接贪心 如果有了20怎么办? 那么,20能用几张呢? 是否可以被50替换呢? 50*2=20

【动态规划专题】3:换钱的最少货币数

<程序员代码面试指南--IT名企算法与数据结构题目最优解> 左程云 著 换钱的最少货币数 [题目] 给定数组arr, arr中所有的值都为正数且不重复.每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个整数aim,代表要找的钱数,求组成aim的最少货币数. [举例]arr=[5,2,3],aim=204张5元可以组成20元,其他找钱方案都要使用更多的货币,所以返回4. arr=[5,2,3],aim=0不用任何货币就可以组成0元,返回0 arr=[3,5],aim=2根本没法组

动态规划法(二)找零钱问题

??本次博客尝试以storyline的方式来写作,如有不足之处,还请多多包涵~~ 问题的诞生 ??我们故事的主人公叫做丁丁,他是一个十几岁的小男孩,机智聪颖,是某某杂货店的小学徒.在他生活的国度里,只流通面额为1,3,4的硬币.复杂这家店的店长,叫做老王,是个勤奋实干的中年人,每天都要跟钱打交道. ??有一天,他心血来潮,叫住正在摆放货物的丁丁,对他说道:"丁丁,你不是学过计算机方面的算法吗?我这里正好有个问题,不知你能解答不?" ??一听到算法,丁丁的眼睛里闪出光芒,这正是自己的兴趣

[程序员代码面试指南]递归和动态规划-换钱的最少货币数

题目描述 给定arr,arr中所有的值都为正数且不重复.每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个整数aim,求组成aim的最少货币数. 解题思路 dp[i][j]表示只用第0到i种货币,凑成j元的最小货币张数. 初始化: 转移方程: dp[i][j]=min{dp[i-1][j-k*arr[i]]+k} (k>=0) 整理得 dp[i][j]=min{dp[i-1][j],min{dp[i-1][j-k*arr[i]]+k}} (k>=1) 变换得 dp[i][j]=

c语言趣题之“找零钱的方法数量 ”

/* Name: Copyright: Author: Date: 31-12-14 16:51 Description: 找零钱的方法数量 描述 我们知道人民币有1.2.5.10.20.50.100这几种面值. 现在给你n(1≤n≤250)元,让你计算换成用上面这些面额表示且总数不超过100张,共有几种. 比如4元,能用4张1元.2张1元和1张2元.2张2元,三种表示方法. 输入 输入有多组,每组一行,为一个整合n. 输入以0结束. 输出 输出该面额有几种表示方法. 样例输入 1 4 0 样例