给定篮球比赛的最终得分,我如何计算导致最终得分的可能得分序列的数量。
每个得分可以是以下之一:3 分、2 分、1 分,由客队或主队得分。例如:
basketball(3,0)=4
因为这些是 4 种可能的评分序列:
V3
V2, V1
V1, V2
V1, V1, V1
并且:篮球(88,90)=2207953060635688897371828702457752716253346841271355073695508308144982465636968075
此外,我需要以递归方式并且没有任何全局变量(允许使用字典,并且可能是解决此问题的方法)此外,该函数只能将结果作为参数(篮球(m,n))。
对于那些要求解决方案的人:
basketballDic={}
def basketball(n,m):
count=0;
if n==0 and m==0:
return 1;
if (n,m) in basketballDic:
return basketballDic[(n,m)]
if n>=3:
count+= basketball(n-3,m)
if n>=2:
count+= basketball(n-2,m)
if n>=1:
count+= basketball(n-1,m)
if m>=3:
count+= basketball(n,m-3)
if m>=2:
count+= basketball(n,m-2)
if m>=1:
count+= basketball(n,m-1)
basketballDic[(n,m)]=count;
return count;