题目如下:
看到这个贴心的动画,我第一时间想到的就是动态规划,动画里下面的数是上面的两个相邻数的和,所以我一半用“伪动态规划”,利用Python的插入语法,从第三层开始由前面的层来递推。
class Solution:
def generate(self, numRows: int) -> List[List[int]]:
if numRows == 1:
return [[1]]
if numRows == 2:
return [[1],[1,1]] #第一种和第二种情况直接返回
result = [[1],[1,1]]
for i in range(2,numRows): #之后的情况由前面递推
result.append([1,1])
for j in range(i-1):
result[i].insert(j+1,result[i-1][j]+result[i-1][j+1])
#这个表达式只要稍微找一下关系即可
return result
用c语言的话可能就要纯动态规划了,明天再写吧。