杨辉三角问题(python)
样例输入
4
样例输出
1
1 1
1 2 1
1 3 3 1
def fact(n):
if n==1 or n==0:
a = 1
else:
a = n * fact(n-1)
return a
def pailie(n,m):
a = fact(n)//fact(n-m)
return a
def zuhe(n,m):
a = pailie(n,m)//fact(m)
return a
n = eval(input())
for i in range(0,n):
print()
for j in range(0,i+1):
print(zuhe(i,j),end=" ")
运行后超时,为什么不是最简的呢
你可以参考这个:
上面那位的输出格式跟你的有点不一样
N = int(input())
listA = [[1]]
for i in range(1, N):
listB = [1]*(i+1)
for j in range(1, i):
listB[j] = listA[i-1][j-1] + listA[i-1][j]
listA.append(listB)
for i in listA:
for j in i:
print(j, end = ' ')
print()
有用请点个采纳~
你这里边又是阶乘又是除法的。你是不是找到一个很独特的规律?
杨辉三角不是这样的吗?
class Solution:
def generate(self, numRows: int) -> List[List[int]]:
triangle=[]
for i in range(numRows):
temp=(i+1)*[0]
temp[0]=1
temp[-1]=1
if i>1:
for j in range(1,i):
temp[j]=triangle[i-1][j-1]+triangle[i-1][j]
triangle.append(temp)
return triangle