`
xaajie
  • 浏览: 73243 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

python递归做1元钱换零钱

阅读更多

给定足够的 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

2
0
分享到:
评论
1 楼 wenxiang_tune 2009-09-04  

相关推荐

    基于Python实现的数据结构与算法完整源代码+超详细注释(包含46个作业项目).zip

    17_递归-零钱找零问题 18_递归-博物馆大盗问题 19_顺序查找 20_二分查找 21_冒泡排序和选择排序 22_插入排序 23_希尔排序 24_归并排序 25_快速排序 26_Hash散列&ADT Map 27_树的嵌套列表实现 28_树结构的节点链接法...

    Algorithm-Python.zip

    "Algorithm-Python.zip" 是一个包含与Python编程和算法相关的资源的压缩文件。根据提供的文件名,我们可以推测这个压缩包可能是一个学习或实践算法的项目,涵盖了数据结构、算法实现和一些实用工具函数。 1. **刷题...

    Leetcode 学习笔记 python.zip

    《LeetCode 学习笔记 Python》是一份专为Python开发者准备的编程实战指南,旨在帮助读者深入理解数据结构与算法,并提升在实际编程中的问题解决能力。LeetCode是一个知名的在线编程挑战平台,它包含了各种难度级别的...

    P第9章课件.pptx

    外层循环控制5元纸币的数量,范围在1到20之间,因为一张100元人民币最多能换20张5元纸币。内层循环则控制1元纸币的数量,根据外层循环的5元纸币数量动态调整,确保总张数不超过100。在每次内循环中,通过条件判断...

    leetcode-python

    回溯算法的决策树遍历框架:关键问题路径/选择列表/结束条件解法框架适用于循环⾥⾯的递归,在递归调解之前「做选择」,在递归调解前后「重新选择」 for-loop迭代选择:做选择-&gt; backtrack(路径,选择列表)-&gt;...

    程序设计实训题集1

    【程序设计实训题集1】是一份针对Python编程的学习任务集,主要涵盖了数值计算、文本处理、文件操作、图形计算、XML处理、数据库操作以及网络通信等多个方面。这些任务旨在帮助学习者提升Python编程能力,熟悉常用的...

    AlgoWithPython:파이썬을알고리즘이

    1. **Python基础**: Python是一种高级编程语言,以其清晰的语法和易于理解的特性著称。在Python中,你可以快速地搭建算法框架,无论是简单的数据处理还是复杂的数学计算。学习Python的基础知识,包括变量、数据...

    动态规划专项练习

    动态规划是一种重要的算法思想,广泛应用于计算机科学,特别是在解决最优化问题时。它通过将大问题分解为子问题,然后逐步构建解决方案,从而避免了重复计算,提高了效率。本专项练习旨在深入理解和熟练掌握动态规划...

    Leetcode:该存储库包含我对Leetcode问题的解决方案

    3. **回溯法**:Python 的递归特性使得回溯法变得直观,常用于解决组合优化问题,如八皇后问题、N-皇后问题等。 4. **哈希表**:Python 的字典数据结构提供高效的键值对存取,适合解决查找、去重等问题,如两数之和...

    DS-ALGO:DS符合我的惯例

    10. **哈希表**:哈希表提供快速的查找、插入和删除操作,Python的字典(dict)就是一种哈希表。 11. **堆**:堆是一种特殊的树形数据结构,满足堆性质。Python的`heapq`模块提供了堆操作,如插入、删除最小元素。 ...

    algorithm-practice:算法实践-dp,bfs,dfs,分而治之,贪婪..

    Python中的递归或栈可以用来实现DFS。 **分治法(Divide and Conquer)**:分治法是将一个问题分解为两个或更多的相同或相似的子问题,直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。典型的分治...

    tanxinsuanfa.zip_tanxinsuanfa_算法_贪心算法

    这些代码通常会展示如何通过迭代或递归的方式,按照贪心策略一步步解决问题。 贪心算法的优点是简单快速,尤其在处理规模较小的问题时。然而,它的缺点是无法保证在所有情况下都能找到全局最优解,因为有些问题的最...

    leetcode题库-LeetCode_recording:LeetCode_recording

    作者通过这个项目分享了他/她的C++和Python版本的解题代码,为其他学习者提供了一个参考和学习的资源。 在刷LeetCode的过程中,程序员通常会遇到各种类型的题目,包括但不限于数组、字符串、链表、树、图、动态规划...

    计算机编程算法的动态规划问题

    动态规划是一种在计算机科学中广泛使用的算法设计方法,特别是在解决最优化问题时。它通过将复杂问题分解为更小的子问题,然后逐步构建出全局最优解。动态规划的核心思想是“记忆化”和“分治”,即保存并重用之前...

    leetcode:实践

    一、Python 基础篇 在 LeetCode 中,Python 作为一门常用的语言,涉及到的基础知识点包括但不限于: 1. 变量与数据类型:理解整型、浮点型、字符串、布尔型等基本数据类型。 2. 运算符:掌握算术、比较、逻辑、位...

Global site tag (gtag.js) - Google Analytics