Chinaunix首页 | 论坛 | 博客
  • 博客访问: 86657
  • 博文数量: 47
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 625
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-11 12:11
文章分类

全部博文(47)

文章存档

2008年(47)

我的朋友

分类:

2008-11-12 16:51:03

Problem 18

31 May 2002

By starting at the top of the triangle below and moving to adjacent numbers on the row below, the maximum total from top to bottom is 23.

3
7 5
2 4 6
8 5 9 3

That is, 3 + 7 + 4 + 9 = 23.

Find the maximum total from top to bottom of the triangle below:

75
95 64
17 47 82
18 35 87 10
20 04 82 47 65
19 01 23 75 03 34
88 02 77 73 07 63 67
99 65 04 28 06 16 70 92
41 41 26 56 83 40 80 70 33
41 48 72 33 47 32 37 16 94 29
53 71 44 65 25 43 91 52 97 51 14
70 11 33 28 77 73 17 78 39 68 17 57
91 71 52 38 17 14 91 43 58 50 27 29 48
63 66 04 68 89 53 67 30 73 16 69 87 40 31
04 62 98 27 23 09 70 98 73 93 38 53 60 04 23

NOTE: As there are only 16384 routes, it is possible to solve this problem by trying every route. However, , is the same challenge with a triangle containing one-hundred rows; it cannot be solved by brute force, and requires a clever method! ;o)

从(i, j)开始的最大值为(i+1,j)与(i+1,j+1)中的大者加上(i, j)自身,

我们从最下面一行开始计算

def fun18():
    fp = open("68.txt", "r")
    lines = fp.readlines()
    lines.reverse()

    line = map(int, lines[0].split())
    for i in lines[1:]:
        result = map(int, i.split())
        for i in range(len(result)):
            result[i] += max(line[i], line[i+1])
        line = result
    return result

answer is 1074

该方法同样可以计算Problem 68

answer is 7273

time:0.0150001049042


阅读(375) | 评论(0) | 转发(0) |
0

上一篇:Problem 15

下一篇:Problem 21

给主人留下些什么吧!~~