当前位置 : 主页 > 编程语言 > java >

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

来源:互联网 收集:自由互联 发布时间:2022-08-15
问题描述 请用Python实现一段程序,可以对一个整数k进行拆分,得到所有由1到k的整数相加的形式。下面举例说明了4的几种拆法,相同的数,顺序不同,看作同一形式,如4=1+2+1就与4=1


问题描述

请用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)

 

上一篇:含泪整理Redis相关面试题大全
下一篇:没有了
网友评论