Chinaunix首页 | 论坛 | 博客
  • 博客访问: 138147
  • 博文数量: 25
  • 博客积分: 588
  • 博客等级: 中士
  • 技术积分: 292
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-10 18:18
文章分类

全部博文(25)

文章存档

2012年(7)

2011年(18)

我的朋友

分类: Python/Ruby

2011-07-04 18:12:43

  1. import sys
  2. (M,N) = map(int, sys.stdin.readline().strip().split(',')) #容量,物品个数
  3. w = map(int, sys.stdin.readline().strip().split(',')) #容量
  4. v = map(int, sys.stdin.readline().strip().split(',')) #价值
  5. f = (M+1)*[-1] #f[i] 表示容量还剩i的情况下所能承载的最大价值
  6. #自底向上
    for k in range(M+1):
        max = 0
        for i in range(N):
            sp = k-w[i]
            if sp >=0:
                if v[i] + f[sp] > max:
                    max = v[i] + f[sp]
        print k,max
        f[k] = max
    print f[M]
    sys.exit(0)
    """
  7. #自顶向下
  8. def F(n):
  9.     max = 0
  10.     for i in range(N):
  11.         sp = n - w[i]
  12.         if sp >= 0:
  13.             if f[sp] >= 0:
  14.                 t = v[i] + f[sp]
  15.             else:
  16.                 t = v[i] + F(sp)
  17.             if t>max:
  18.                 max=t
  19.     f[n] = max
  20.     return max
  21. F(M)
  22. max=0
  23. for i in f:
  24.     if i > max:
  25.         max = i
  26. print max
阅读(1156) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~