无限和有限钱币找零问题-java 钱的面值1,2,5,10块

java硬币问题贪心算法_贪心算法——找纸币问题 贪心算法——找纸币问题问题主题:找问题描述:假设有1元、2元、5元、10元、20元、50元、100的纸币分别为c0,c1,c2,c3,c4,c5,c6,张。现在要用这些来支付K元,至少要用多少张纸币?如果能找,则输出纸币的张数,不能找则输出No限制条件:0<=c0,c1,c2,c3,c4,c5,c6<=1090<=K<=109样例:输入C0=3,c1=0... 阅读详情

类型1:你有1元,2元,5元,10元种4面值的钱(数量是无限的),问:你要给用户找零时有多少种找法?

思路:可以将其看成一个等式,假设N为要找给用户的钱,那么你就可以进行循环计算赛选出1x+2y+5z+10h=N。赛选出符合这个等式的条件。看代码:

import java.util.*;
public class WirelessMoney {
	public static void main(String []args) {
		WirelessMoney main = new WirelessMoney();
	    int v=main.GiveChargeSum(37);
	    System.out.print(v);
	}
    public int GiveChargeSum (int N) {
        int R= 0;
        int a= N/10;
        int b= N/5;
        int c=N/2;
        for(int x=0;x<=a;x++) {
        	for (int y=0;y<=b;y++) {
        		for(int z=0;z<=c;z++) {
        			for(int m=0;m<=N;m++) {
        				int r=x*10+y*5+2*z+m;     				
        				if(r==N) {
            				R++;
            			}
        			}
        		}
        	}
        }
		return R;     
    }
}

这是目前能想到最容易实现的一种方法,但是时间复杂度比较高(有更好想法的小伙伴可以私信我哦)。

类型二:你有1元,2元,5元,10元种4面值的钱(数量是无限的),问:你要给用户找零钱,问:至少要多少张纸币?

思路:贪心算法(每次给最大的就可以了呗)看代码:

 public int Givemoney(int N) {
    	int number = 0;
		int a =N/10;
		if(a>=0) {//用几张10元
			int money = N - a*10;
			int b = money/5;
			number = number + a;
			if(b>=0) {//用几张5元
				money = money - b*5;
				number = number + b;
				int c= money/2;
				if(c>=1) {//用几张2元
					money = money - c*2;
					number = number + c + money;//这里有多少钱就用几张1元,所有直接加就可以了
				}else {
					number = number + money;
				}
			}
		}
    	
    	return number;  	
    }

注:还有种情况是,将钱币的数值放在数组中,这里对应的钱币数值就直接换成数组下标的值即可。

类型三:你有1元,2元,5元,10元种4面值的钱(数量是有限的分别是 10,3,0,5),问:你要给用户找零钱,问:至少要多少张纸币?(这部分之后补充)

HBuilderX远程开发环境配置:Windows SSH连接实操 详细介绍如何在Windows系统中通过SSH连接远程服务器,配置HBuilderX进行高效远程开发,提升编码协作效率。全程实操演示,轻松掌握hbuilderx与远程环境的无缝对接。 阅读详情

相关推荐

实现钱币找零算法 Java

算法的核心思想是从最大面值的硬币开始找零。我们遍历硬币面值数组,对于每个面值,我们计算出需要的硬币数量,并更新找零结果剩余要找零的金额。最后,我们返回找零结果的。钱币找零是一种常见的计算问题,涉及将一定金额的以最少的硬币数量找零。在这篇文章中,我将为您提供一个使用Java编写的钱币找零算法的实现。您可以根据自己的需求修改硬币面值找零的金额进行测试。首先,我们需要定义硬币的面值找零的金额。我们的目标是找零金额为20元。来存储找零结果,其中键表示硬币面值,值表示需要的硬币数量。

DevSavantX的博客 293

python 面试遇到的两个凑数的算法题

现有不限数量的面额分别为1元,2元, 5元,10元的货币,如果要用这些货币组合成x元,求一共有多少种组合方式?请说出这类问题在算法中被称为什么问题并用代码实现 def abc(x): n=0 for i in range(x+1): for j in range(x/2+1): for k in range(x/5+1): ...

Hayley-L 4022

【算法 - 动态规划】找零问题

一题搞懂动态规划的 严格表依赖 有什么用? 如何进一步优化?

weixin_46879314的博客 2018

人民币问题

人民币问题编写一个函数计算金额"X"需要多少张面值为n元的纸币。在主函数中输入一个金额值,调用该函数,计算组成该金额最少需要多少张纸币。 注:人民币面值不包括角分 有1元、2元,5元,10元、20元、50元、100元。 #include void main(){    int i, j, k,tmp=0,total=0;    int money[7] = {100,50,20,10,5

ccckobe的专栏 939

java最少钱币数_最少钱币数---贪心算法

贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解.贪心算法不是对所有问题都能得到整体最优解,但对范围相当广泛的许多问题他能产生整体最优解或者是整体最优解的近似解.http://blog.csdn.net/mariofei/article/details/21649995-- 贪心算法概述题目描述这...

weixin_28995139的博客 861

HDU 1284 钱币兑换问题(普通型 数量无限的母函数)

&#13; 传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1284 钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 12335    Accepted Su...

Y先森0.0 241

Java每日一题,动态规划,零兑换模板题】硬币组合数量

给你一个非负整数n,再给你一个整数数组nums表示不同面值的硬币。请你计算并返回可以凑成总金额n的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。假设每一种面额的硬币有无限个。nnums都在int整数范围内第一行输入整数nm。n表示总金额数(1...

小梁说代码的博客 763

算法:LeetCode322_零兑换_java实现

【代码】算法:LeetCode322_零兑换_java实现。

工匠精神coding,终生学习 366

LeetCode 322 凑零问题

//给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。 // // 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。 // // 你可以认为每种硬币的数量是无限的。 / 示例 1: // // //输入:coins = [1, 2, 5], amount = 11 //输出:3 //解释:11 = 5 + 5 + 1 // // 示例 2: // // //输入:coins = [2],.

吹啊~吹啊~大风吹~~ 577

Poj 1742 Coins(多重背包)

一、Description People in Silverland use coins.They have coins of value A1,A2,A3...An Silverland dollar.One day Tony opened his money-box and found there were some coins.He decided to buy a ve...

a136358的博客 215

Day44:动态规划 LeedCode 完全背包 518. 零兑换 II 377. 组合总

dp[i][j]:表示前i件(包含第i件)物品能让容量为j的背包获得的最大价值1.不放第i件物品,这里01背包一样,dp[i][j]=dp[i-1][j]2.放第i件物品,这里01背包有区别,由于每件物品可以反复取,dp[i][j]=d[i][j-weight[i]]+value[i] ,01背包由于只能放一次,故当前方程由上一件物品得出,为dp[i][j]=d[i-1][j-weight[i]]+value[i]用一维dp数组解决完全背包:dp[i]表示容量为i的背包能装的最大价值。

2301_76352996的博客 912

笔试题目:RMB组合,有如下RMB 面额, 1,2,5,10,20,50,100,给定各面额纸币数RMB总额,求组合方案——递归回溯算法

RMB组合,有如下RMB 面额, 1,2,5,10,20,50,100,给定一个RMB总额,求组合方案。各面额数没限制。 动态规划实现参考:https://blog.csdn.net/qq_33619378/article/details/82748576 如果需要纪录各方案的面额,则得使用递归回溯,代码如下: import java.util.ArrayList; import java.util.List; import java.util.Scanner; /** * Title: * Desc

qq_43409401的博客 1976

给定1个数 输出按人民币最大面值组成的张数

给定1个数 输出按人民币最大面值组成的张数

阿松哥哥2018的博客 277

java 计算金额需要的面值为100,50,20,10,5,1的张数

//设计一个自动计算需要面值的算法 //假设有 100 50 20 10 5 1的面值 public class money {     long money; public money(long money){ this.money=money; } long [] ccc={100,50,20,10,5,1}; long [] ddd=new long[6]; pub

jinyehong的博客 3781

输入一个金额,可输出这个金额由那些面值的几张组成

import java.util.Scanner; //输入一个金额,可输出这个金额由那些面值的几张组成; public class couYingBi { public static void main(String args[]){ Scanner a=new Scanner(System.in); int b=a.nextInt(); cc://标号,任何循环都可以使用标号,意为,后面的循...

lly822ll的博客 1177

题目1549:货币问题

题目描述: 已知有面值为1元,2元,5元,10元,20元,50元,100元的货币若干(可认为无穷多),需支付价格为x的物品,并需要恰好支付,即没有找零产生。 求,至少需要几张货币才能完成支付。 如,若支付价格为12元的物品,最少需要一张10元一张2元,即两张货币就可完成支付。 输入: 输入包含多组测试数据,每组仅包含一个整数p(1 输出:

多看多听多总结 1628

C语言:算法 用面值为1元,5元,10元不限张数的人民币凑出20元,有多少种方法

思路想法:这种题目就是运用最基本的穷举法的思想,用循环将每一种可能性罗列出来,用数学思维考虑,与打乒乓球对打方案的题目类似 下来我们进行代码演示 代码示例: ​ int main() { int cout = 0;//定义一个计数器 保存有多少种方法 for (int i=0; i <= 2; i++) // i对应10元 j对应5元 k对应1元 { for (int j = 0; j <= 4; j++) { for (int k = 0; k <=

oorik的博客 2547

java编写最少钱币数_最少钱币

最少钱币数 题目答案【问题描述】这是一个古老而又经典的问题。用给定的几种钱币凑成某个数,一般而言有多种方式。例如:给定了6种钱币面值为2、5、10、20、50、100,用来凑15元,可以用5个2元、1个5元,或者3个5元,或者1个5元、1个10元,等等。显然,最少需要2个钱币才能凑成15元。你的任务就是,给定若干个互不相同的钱币面值,编程计算,最少需要多少个钱币才能凑成某个给出的数。【要求】...

weixin_33308985的博客 545

第七天 Labview进阶(7.3 Teststand简单使用)

TestStand是NI开发的自动化测试管理软件,支持多语言编程硬件集成,广泛应用于电子产品工业测试。安装时需注意版本选择,2022版支持离线安装。使用步骤包括:1)创建测试序列文件;2)插入测试动作并配置参数(如选择VI路径、设置变量);3)添加条件判断延时控制;4)执行测试序列时具备流程控制功能,如失败步骤自动跳过后续测试。该软件能有效提升测试效率与准确性,通过可视化操作实现复杂测试流程管理。

weixin_38637405的博客 1628

Deep-Reinforcement-Learning-Hands-On_deepreinforcement_强化学习_

深度强化学习示例,包含很多常用算法。代码清晰,非常好。

上一篇: 计算某字符出现次数 和 字符串到字符的转化
下一篇: 微信小程序开发 — 顶部导航栏
我的蔚蓝天空
博客等级 码龄7年 3粉丝 · 7原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值