问题描述
我正在学习递归算法和贪婪算法,此代码将原始金额所需的更改分开。我尝试使用递归算法,但是直到添加中断以避免进一步的迭代,代码才能正常工作。这是正确的吗?
public class Main {
public static void main(String[] args) {
// write your code here
int[] coinSet = {20,10,5,1};
int N = 214;
GreedyChange greedyChange = new GreedyChange();
greedyChange.greedyChange(coinSet,N);
greedyChange.printChange();
}
}
public class GreedyChange {
private final List<Integer> coins = new ArrayList<>();
public void greedyChange(int[] coinSet,int change) {
if(change<=0){
return;
}
for (int j : coinSet) {
if (change - j >= 0) {
coins.add(j);
change -= j;
greedyChange(coinSet,change);
break;
}
}
}
public void printChange() {
System.out.println("The change is being distributed in " + coins.size() + " coins in the following" +
" way: ");
int sum = 0;
for (int i = 0; i < coins.size(); i++) {
if (i == coins.size() - 1) {
System.out.print( "$" +coins.get(i));
} else {
System.out.print("$" + coins.get(i) + " + ");
}
sum += coins.get(i);
}
System.out.print(" = $" + sum);
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)