请用Python实现一段程序,可以对一个整数k进行拆分,得到所有由1到k的整数相加的形式

网友投稿 801 2022-10-20 20:05:01

请用Python实现一段程序,可以对一个整数k进行拆分,得到所有由1到k的整数相加的形式

问题描述

请用Python实现一段程序,可以对一个整数k进行拆分,得到所有由1到k的整数相加的形式。下面举例说明了4的几种拆法,相同的数,顺序不同,看作同一形式,如4=1+2+1就与4=1+1+2相同。

4=1+1+1+1

4=1+1+2

4=1+3

4=2+2

4=4

感受

第一次用python写了个递归,居然入了深拷贝和浅拷贝的坑,python代码是简洁,也比较容易犯错了,看来基础还是需要的。

代码

import copyimport operatordef solve(n,sum,list_res): if(sum>n): return if(sum==n): list_res.sort() # print(list_res) b=list_res flag=True for item in result: if(item==list_res): flag=False break if(flag): result.append(copy.deepcopy(list_res)) # print(result) # print(list_res) # print(result) for i in range(1,n+1): list_res.append(i) solve(n,sum+i,list_res) list_res.pop() return resultif __name__ == "__main__": val=input("please input: ") # print(val) result=[] list_res=[] result=solve(val,0,list_res) for item in result: print(item)

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:nodeJs用户权限管理框架
下一篇:Ractive.js - 下一代DOM操作框架
相关文章