Lattice problems
1. paths-problem 15 in Project Euler-Python实现
问题描述:起点为左上角,终点为右下角,行进方向只能是向右或者向下,那么对于一个20 x 20网格,从起点到终点一共有多少条路径。
问题分析:该问题可通过二维数组进行分析。20 x 20网格中,共有 21 x 21网格点。以终点为二维数组第一个元素,建立二维数组。对任意一个网格点,其到终点的路径数为下方网格点路径数加上右方网格点路径数。即
Routes[i][j] = Routes[i][j-1] + Routes[i-1][j]
python程序:
1 # coding = utf8 2 3 # 边界 4 bottom = [0, 1, 1, 1, 1, 5 1, 1, 1, 1, 1, 6 1, 1, 1, 1, 1, 7 1, 1, 1, 1, 1, 1] 8 right = [0, 1, 1, 1, 1, 9 1, 1, 1, 1, 1, 10 1, 1, 1, 1, 1, 11 1, 1, 1, 1, 1, 1] 12 13 # 初始化数组 n*n grid 对应的数组大小为(n+1)*(n+1)(网格点) 14 routes = [[0] * 21 for i in range(21)] 15 16 # 初始化数组边界 17 for i in range(21): 18 routes[0][i] = bottom[i] 19 for i in range(21): 20 routes[i][0] = right[i] 21 22 # 路径数通过相邻两节点路径数相加得到 23 for i in range(1, 21): 24 for j in range(1, 21): 25 routes[i][j] = routes[i][j-1] + routes[i-1][j] 26 print(routes[20][20])

浙公网安备 33010602011771号