Algorithm 使用递归打印所有可能的对以更改货币
我提出了这个递归的解决方案,来找到最小数量的硬币,以改变给定货币的一组硬币面额。它工作得很好,但我想扩展这个算法,以打印所有可能的方式来改变钱,但我不能 这是我的密码:Algorithm 使用递归打印所有可能的对以更改货币,algorithm,recursion,Algorithm,Recursion,我提出了这个递归的解决方案,来找到最小数量的硬币,以改变给定货币的一组硬币面额。它工作得很好,但我想扩展这个算法,以打印所有可能的方式来改变钱,但我不能 这是我的密码: static HashMap <Integer,Integer> map = new HashMap<>(); public static void main(String [] args) { int money=75,coins [] = {1,5,6}; System.ou
static HashMap <Integer,Integer> map = new HashMap<>();
public static void main(String [] args)
{
int money=75,coins [] = {1,5,6};
System.out.println(rc(money,coins));
}
public static int rc(int money,int [] coins)
{
if(money==0)
return 0;
int mincoins = Integer.MAX_VALUE;
for(int i=0;i<coins.length;i++)
{
if(money>=coins[i])
{
int ncoins;
if(map.containsKey(money-coins[i]))
ncoins = map.get(money - coins[i]);
else
ncoins = rc(money-coins[i],coins);
map.put(money-coins[i], ncoins);
if(ncoins+1<mincoins)
mincoins = ncoins+1;
}
}
return mincoins;
}
static HashMap map=new HashMap();
公共静态void main(字符串[]args)
{
国际货币=75,硬币[]={1,5,6};
系统输出打印LN(rc(货币、硬币));
}
公共静态整数rc(整数货币,整数[]硬币)
{
如果(货币==0)
返回0;
int mincoins=Integer.MAX_值;
对于(int i=0;i=coins[i])
{
int-ncoins;
if(地图容器(钱币[i]))
ncoins=map.get(money-coins[i]);
其他的
ncoins=rc(货币硬币[i],硬币);
地图放置(钱币[i],n币);
如果(ncoins+1每次调用递归函数之前,将硬币添加到全局列表中。函数调用后,将硬币从列表中移除
如果您的货币=0
,那么您只需打印列表,因为这将告诉您必须减去哪些硬币才能得到0
如果钱<0
,那意味着你做得太多,减法太多,必须后退一步
表意文字链接:
import java.util.*;
导入java.lang.*;
导入java.io.*;
表意文字{
静态列表顺序=新的ArrayList();
公共静态无效rc(整数货币,整数[]硬币){
如果(货币<0){
返回;
}
如果(货币==0){
系统输出打印项次(序号);
}
int mincoins=Integer.MAX_值;
对于(int i=0;i
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
[1, 1, 1, 1, 1, 1, 1, 5]
[1, 1, 1, 1, 1, 1, 5, 1]
[1, 1, 1, 1, 1, 1, 6]
[1, 1, 1, 1, 1, 5, 1, 1]
[1, 1, 1, 1, 1, 6, 1]
[1, 1, 1, 1, 5, 1, 1, 1]
[1, 1, 1, 1, 6, 1, 1]
[1, 1, 1, 5, 1, 1, 1, 1]
[1, 1, 1, 6, 1, 1, 1]
[1, 1, 5, 1, 1, 1, 1, 1]
[1, 1, 5, 5]
[1, 1, 6, 1, 1, 1, 1]
[1, 5, 1, 1, 1, 1, 1, 1]
[1, 5, 1, 5]
[1, 5, 5, 1]
[1, 5, 6]
[1, 6, 1, 1, 1, 1, 1]
[1, 6, 5]
[5, 1, 1, 1, 1, 1, 1, 1]
[5, 1, 1, 5]
[5, 1, 5, 1]
[5, 1, 6]
[5, 5, 1, 1]
[5, 6, 1]
[6, 1, 1, 1, 1, 1, 1]
[6, 1, 5]
[6, 5, 1]
[6, 6]