0
点赞
收藏
分享

微信扫一扫

请用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 copy
import operator
def 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 result




if __name__ == "__main__":
val=input("please input: ")
# print(val)
result=[]
list_res=[]
result=solve(val,0,list_res)
for item in result:
print(item)

 

举报

相关推荐

0 条评论