[Python]Lintcode 437. 书籍复印给定 n 本书, 第 i 本书的页数为 pages[i].所有人复印的速度是一样的, 复印一页需要花费一分钟

Lintcode 437. 书籍复印

给定 n 本书, 第 i 本书的页数为 pages[i]. 现在有 k 个人来复印这些书籍, 而每个人只能复印编号连续的一段的书, 比如一个人可以复印 pages[0], pages[1], pages[2], 但是不可以只复印 pages[0], pages[2], pages[3] 而不复印 pages[1].

所有人复印的速度是一样的, 复印一页需要花费一分钟, 并且所有人同时开始复印. 怎样分配这 k 个人的任务, 使得这 n 本书能够被尽快复印完?

返回完成复印任务最少需要的分钟数.

Code

def copyBooks(self, pages, k):
    # write your code here
    n = len(pages)
    if n == 0:
        return 0
    if k >= n:#求最少多少个人,分段方式,不超过k人
        k = n
    
    dp = [[0]*(n+1) for _ in range(k+1)]
    dp[0][0] = 0
    for j in range(1, n+1,1):
        dp[0][j] = float('inf')#0个人写i本书
    
    for kc in range(1, k+1,1):#kc个人
    	dp[kc][0]=0#2.人写0本书
        for i in range(1, n+1,1):#i本书
            dp[kc][i] = float('inf')#因为要求最小值
            s = 0
            j=i
            while j >= 0: 
                dp[kc][
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值