不限硬币数量的最少硬币问题(递归算法)

news/2024/11/29 6:41:03/

用递归写了一个最少硬币问题,然后有少部分数据过不去,个人找不到bug,求救qwq
所用语言是java
思路就是拟人化,假设有1,2,5三种硬币,假设要凑出11,那么肯定是先用5去尝试,
然后就变成了凑出6.
如果出现无法凑出的情况,就回溯到上一步,撤销上一步,然后开始新的尝试

代码如下:
import java.util.Scanner;
class Main
{
static int x,y,z; //x是硬币种数,y是需要凑成的金额数,z是所需硬币数,a是硬币面值数组
static int[] a;
static int coin(int g) //输入数为需要凑成的金额数,返回数为所需要的硬币数
{
int i;
for(i=1;i<=x;i++)
{
if(g>a[x-i])
{
int b=coin(g-a[x-i]);
if (b!=-1)
return 1+b;
}
else if (g==a[x-i])
return 1;
}
return -1;
}
public static void main(String[] args)
{
Scanner reader = new Scanner(System.in);
int p;
x = reader.nextInt();
a = new int[x];
for (int i=0;i<x;i++)
a[i] = reader.nextInt();
y = reader.nextInt();
if (y<=0)
{
System.out.println(-1);
System.exit(0);
}
for (int i=0;i<x;i++)
{
for(int n=0;n<(x-1);n++)
{
if (a[n]>a[n+1])
{
p = a[n+1];
a[n+1] = a[n];
a[n] = p;
}
}
}
z = coin(y);
System.out.println(z);
}
}

第一次尝试发博客,有问题多谢指出


http://www.ppmy.cn/news/545948.html

相关文章

人民币兑换 (c语言)

题目&#xff1a; 1 元 5 角钱人民币兑换 5 分、2 分和 1 分的硬币&#xff08;每一种都要有&#xff09;共 100 枚&#xff0c;会有很多种兑换方案。请编写程序给出各种兑换方案。 输入格式: 输入为一个正整数 n&#xff0c;表示要求输出前 n 种可能的方案。方案的顺序&#…

python硬币游戏悖论

今天和我俞姐对一个数学概率问题进行讨论&#xff0c;讨论半天没有结果&#xff0c;然后决定用代码仿真实现一下。 题目&#xff1a;连续掷一枚硬币&#xff0c;如果连续的三次结果出现正正反的情况下A赢&#xff0c;出现正反反的结果B赢&#xff0c;请问A赢的概率大还是B赢得概…

商业源码QQ币,YY币,充值支付系统源码

介绍&#xff1a; 本站测试不是太全&#xff0c;大家自己研究即可&#xff0c;php的&#xff0c;部署难度不高&#xff0c;监控实测是ok的&#xff0c;能看到。没有接口demo需要自己写。 网盘下载地址&#xff1a; https://zijiewangpan.com/DBeEOk6Fl4p 图片&#xff1a;

x*y=k

(图片为pplpleasr作品Uniswap V3宣传动画截图) 今天是个好日子&#xff0c;4月1号愚人节&#xff0c;哈哈哈&#xff0c;咱们就来说点儿轻松愉快的话题吧。 看到标题秒联想到Uniswap的&#xff0c;肯定是DeFi老韭菜。是的&#xff0c;没错&#xff0c;x*yk就是Uniswap的灵魂&am…

python脚本王者荣耀自动刷金币

基于ADB&#xff08;Android Debug Bridge&#xff09; 1、下载ADB下载地址 下载之后解压文件随便放置到那个文件夹都可以 需要将adb.exe所在的文件路径添加到环境变量中在CMD中输入adb显示如下&#xff0c;说明adb没有问题了 2、手机进入开发者模式 这个进入开发者模式比…

C语言编程之换硬币

现在有这样一道题。假设给你一分硬币&#xff0c;两分硬币&#xff0c;五分硬币共60枚。需要将它们兑换成100分的硬币&#xff0c;可以怎么换&#xff1f; 而我们可以列出如下关系式 假设x,y,z分别为一分&#xff0c;两分&#xff0c;五分硬币则: xyz60 x2y5z100 对于这道题我…

洛谷-硬币翻转

题目&#xff1a; 题目描述 在桌面上有一排硬币&#xff0c;共N枚&#xff0c;每一枚硬币均为正面朝上。现在要把所有的硬币翻转成反面朝上&#xff0c;规则是每次可翻转任意N-1枚硬币&#xff08;正面向上的被翻转为反面向上&#xff0c;反之亦然&#xff09;。求一个最短的操…

计算机中¥符号按哪个键,人民币符号(¥)

&#xffe5;是下列两种货币的货币符号: 人民币(CNY) 日元(JPY) 因为以上两种货币的单位都是圆(圆&#xff0f;元&#xff0f;円)&#xff0c;日语发音为en。符号由拉丁字母"Y"和两道平行水平线组成。中国大陆早期多使用一道水平线&#xff0c;现时则多使用两道水平线…