2018-06-11

动态规划法解剪绳子问题

1.问题:

2.分析:定义函数f(n)为长度为n的绳子剪成若干段后的最大长度乘积

若从上而下使用递归会产生大量重复问题,不如自下而上用循环依次计算f(2),f(3)等

3.代码:


def maxlength(n):

    if n==1:

        print('长度太短')

        return

    if n==2:

        print(1)

        return

    if n==3:

        print(2)

        return

    else:

        maxlist=[2,3]

        for j in range(4,n+1):

            v=int(0.5*j+1)

            maxlength=0

            for i in range(2,v):

                result=maxlist[i-2]*maxlist[j-i-2]

                if result>maxlength:

                    maxlength=result

            maxlist.append(maxlength)

        print(maxlist[n-2])   

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容