package test;
import java.util.Stack;
class Money {
int fen;
int number;
}
public class Temp {
static Stack<Money> stack = new Stack<Money>();
// 假设只有1角,5分,2分和1分。如果更多,请自行添加,记得金额从大到小排列
static int[] nums = new int[] { 10, 5, 2, 1 };
public static void fen(int target, int sum, int index) {
for (int i = index; i < nums.length; i++) {
int num = nums[i];
if (num > target) { // 如果面值超过找零的数值,则忽略
continue;
}
Money m = new Money();
m.fen = num;
stack.push(m);
while (sum + num <= target) {
m.number++;
if (sum + num == target) {
showResult();
}
sum += num;
}
fen(target, sum, i + 1);
stack.pop();
sum -= m.fen * m.number;
}
}
private static void showResult() {
for (Money m : stack) {
if (m.number > 0) {
System.out.print(m.fen + ":" + m.number + " ");
}
}
System.out.println();
}
public static void main(String[] input) throws Exception {
fen(17, 0, 0); // 测试找1角7分
}
}
运行结果
10:1 5:1 2:1
10:1 5:1 1:2
10:1 2:3 1:1
10:1 1:7
5:3 2:1
5:3 1:2
2:8 1:1
1:17
分享到:
相关推荐
.net 递归算法.net 递归算法.net 递归算法.net 递归算法.net 递归算法.net 递归算法.net 递归算法.net 递归算法
递归算法详解递归算法详解递归算法详解递归算法详解
18.递归算法与递归算法应用.ppt
VC对磁盘文件遍历搜索的递归算法和非递归算法 里面的文档是讲解递归算法和递归算法的 里面还有一个Vc工程文件,是我自己写的,关于非递归算法,其实里面那些被注释掉的部分是递归算法,大家仔细看看就知道了,
使用C++,请给出此题的递归算法及非递归算法。
5!递归算法和非递归算法,面试专用,适合新手
快速选择非递归与递归算法实现
ACM培训基础算法之递归PPT详解 包括递归的一些基础思想和一些经典例题
递归算法转为非递归算法。方法、过程,用栈的原理
牛顿迭代算法与递归算法的概念和区别 很有帮助
输入:输入的第一行是一个正整数m,表示测试例个数。接下来几行是m个测试例的数据,每个测试例的数据由一个正整数n组成。 输出:对于每个测试例n,输出2n个长度为n的格雷码。(为方便查看,在每个格雷码内,两个位...
本文实例讲述了C++使用递归和非递归算法实现的二叉树叶子节点个数计算方法。分享给大家供大家参考,具体如下: /*求二叉树叶子节点个数 -- 采用递归和非递归方法 经调试可运行源码及分析如下: ***/ #include #...
acm递归算法总结acm递归算法总结!!!!!!!!!!!!!!!!!!!!!!!
数据结构与算法之递归,深入浅出,很深刻,很透彻。
应用于java中的算法 递归算法:是一种直接或者间接地调用自身的算法。在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解。
递归求算排列算法;递归求算排列算法;递归求算排列算法;
用非递归解决八皇后的问题,是经典的非递归算法,学习数据结构中很有用
计算机算法与分析试验递归调用快速排序 全排列仅供参考
数据集合的总排列个数 算法设计 递归算法 的一个基础运用
这个算法是标准的递归,用form来进行递归来计算出10的阶层。有兴趣的朋友可以看看。程序复制在TXT文档中,用se38报表形式展现。