解题思路:
注意事项:
参考代码:
def dfs(n,step):
for i in range(n//2+1):
if exist[i]: # 存在直接用
target=list1[step]
temp[target]+=temp[i]
else:
step+=1
list1[step]=i
dfs(i,step)
# 回溯注意
exist[i]=1 # 打上标记
temp[list1[step-1]]+=temp[list1[step]] #step 分解出step+1 回溯前记得累计上
list1[step]=0
step-=1
n=eval(input())
exist=list(0 for i in range(1001)) # 判断数是否可以直接获取
temp=list(0 for i in range(1001))
exist[0],temp[0]=1,1
result=[0]
list1=[0 for i in range(1001)]
list1[0]=n
dfs(n,0)
print(temp[n])
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题7.5 (C语言代码)浏览:520 |
C语言程序设计教程(第三版)课后习题11.8 (C语言代码)浏览:876 |
DNA (C语言描述,数据结构)浏览:852 |
大家好,我是验题君浏览:577 |
C语言程序设计教程(第三版)课后习题9.4 (C语言代码)浏览:637 |
震宇大神的杀毒软件 (C语言代码)浏览:1079 |
输出九九乘法表 (C语言代码)浏览:1048 |
C语言程序设计教程(第三版)课后习题7.4 (C语言代码)浏览:446 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:771 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:538 |