给定足够的 5角,2角,1角,5分,2分,1分这六种零钱,将1元(100)换成零钱,一共有多少种换法?
def split(n,j):
v=[50,20,10,5,2,1]
if n<0:
return 0
if n==0:
return 1
if j<0:
return 0
return split(n,j-1)+split(n-v[j],j)
执行:
>>> split(100,5)
4562
>>>
可以看到具体方案的方法:
def split(n,j,result):
v=[50,20,10,5,2,1]
if n<0:
return 0
if n==0:
print "方案:"+result
return 1
if j<0:
return 0
return split(n,j-1,result)+split(n-v[j],j,result+str(v[j])+"|")
执行(以1角为例):
>>> split(10,5,"")
方案:10|
方案:5|5|
方案:2|2|2|2|2|
方案:1|2|2|5|
方案:1|1|2|2|2|2|
方案:1|1|1|2|5|
方案:1|1|1|1|2|2|2|
方案:1|1|1|1|1|5|
方案:1|1|1|1|1|1|2|2|
方案:1|1|1|1|1|1|1|1|2|
方案:1|1|1|1|1|1|1|1|1|1|
11
>>>
over
分享到:
相关推荐
17_递归-零钱找零问题 18_递归-博物馆大盗问题 19_顺序查找 20_二分查找 21_冒泡排序和选择排序 22_插入排序 23_希尔排序 24_归并排序 25_快速排序 26_Hash散列&ADT Map 27_树的嵌套列表实现 28_树结构的节点链接法...
"Algorithm-Python.zip" 是一个包含与Python编程和算法相关的资源的压缩文件。根据提供的文件名,我们可以推测这个压缩包可能是一个学习或实践算法的项目,涵盖了数据结构、算法实现和一些实用工具函数。 1. **刷题...
《LeetCode 学习笔记 Python》是一份专为Python开发者准备的编程实战指南,旨在帮助读者深入理解数据结构与算法,并提升在实际编程中的问题解决能力。LeetCode是一个知名的在线编程挑战平台,它包含了各种难度级别的...
外层循环控制5元纸币的数量,范围在1到20之间,因为一张100元人民币最多能换20张5元纸币。内层循环则控制1元纸币的数量,根据外层循环的5元纸币数量动态调整,确保总张数不超过100。在每次内循环中,通过条件判断...
回溯算法的决策树遍历框架:关键问题路径/选择列表/结束条件解法框架适用于循环⾥⾯的递归,在递归调解之前「做选择」,在递归调解前后「重新选择」 for-loop迭代选择:做选择-> backtrack(路径,选择列表)->...
【程序设计实训题集1】是一份针对Python编程的学习任务集,主要涵盖了数值计算、文本处理、文件操作、图形计算、XML处理、数据库操作以及网络通信等多个方面。这些任务旨在帮助学习者提升Python编程能力,熟悉常用的...
1. **Python基础**: Python是一种高级编程语言,以其清晰的语法和易于理解的特性著称。在Python中,你可以快速地搭建算法框架,无论是简单的数据处理还是复杂的数学计算。学习Python的基础知识,包括变量、数据...
动态规划是一种重要的算法思想,广泛应用于计算机科学,特别是在解决最优化问题时。它通过将大问题分解为子问题,然后逐步构建解决方案,从而避免了重复计算,提高了效率。本专项练习旨在深入理解和熟练掌握动态规划...
3. **回溯法**:Python 的递归特性使得回溯法变得直观,常用于解决组合优化问题,如八皇后问题、N-皇后问题等。 4. **哈希表**:Python 的字典数据结构提供高效的键值对存取,适合解决查找、去重等问题,如两数之和...
10. **哈希表**:哈希表提供快速的查找、插入和删除操作,Python的字典(dict)就是一种哈希表。 11. **堆**:堆是一种特殊的树形数据结构,满足堆性质。Python的`heapq`模块提供了堆操作,如插入、删除最小元素。 ...
Python中的递归或栈可以用来实现DFS。 **分治法(Divide and Conquer)**:分治法是将一个问题分解为两个或更多的相同或相似的子问题,直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。典型的分治...
这些代码通常会展示如何通过迭代或递归的方式,按照贪心策略一步步解决问题。 贪心算法的优点是简单快速,尤其在处理规模较小的问题时。然而,它的缺点是无法保证在所有情况下都能找到全局最优解,因为有些问题的最...
作者通过这个项目分享了他/她的C++和Python版本的解题代码,为其他学习者提供了一个参考和学习的资源。 在刷LeetCode的过程中,程序员通常会遇到各种类型的题目,包括但不限于数组、字符串、链表、树、图、动态规划...
动态规划是一种在计算机科学中广泛使用的算法设计方法,特别是在解决最优化问题时。它通过将复杂问题分解为更小的子问题,然后逐步构建出全局最优解。动态规划的核心思想是“记忆化”和“分治”,即保存并重用之前...
一、Python 基础篇 在 LeetCode 中,Python 作为一门常用的语言,涉及到的基础知识点包括但不限于: 1. 变量与数据类型:理解整型、浮点型、字符串、布尔型等基本数据类型。 2. 运算符:掌握算术、比较、逻辑、位...