每次用动态规划求最佳值问题的时候,总会想到一个问题,该如何将每一种结果打印到控制台中呢?下面两段实例说不定会给你新的思路
零钱兑换I and 零钱兑换II
(1)零钱兑换I:
贪心算法
伪代码描述思想:
1 | 完全背包之求凑满背包的最少物品数: |
1 | class Solution { |
动态规划背包问题
递归公式->遍历顺序
(2)零钱兑换II:打印零钱兑换组合:
1 |
|
爬楼梯问题以及如何将组合数打印出来
使用递归函数打印所有可能的路径。我们可以修改动态编程解决方案,以跟踪到达每个楼梯所需的步骤。然后,我们可以使用递归函数根据所采取的步骤打印所有可能的路径。
printPaths函数有三个参数:n是要爬的剩余楼梯数,steps是迄今为止所走步骤的数组,len是步骤数组的长度。我们从一个空的steps数组开始,调用printPaths函数,其中n等于楼梯总数。根据下一步是1还是2,函数递归调用自身,n减少1或2。当n达到0时,我们打印步骤数组。
1 |
|
tip:java参数传递与c参数传递
java中基本数据类型传值时不会影响主方法中的定义值的;而作为引用数据类型的数组(包括面向对象中的对象作为方法参数的时候)则会受到影响。
c语言中:
sizeof(a)无法得到数组的大小。为什么会这样?因为把数组作为参数传递给函数时,实际上只有数组的首地址作为指针传递给了函数。换句话说,在函数 **定义中的int a[]**等价于**int *a**。在只有地址信息的情况下,是无法知道数组里有多少个元素** 的。