1 和LeetCode547很像,一开始可以先把满足>3的变成1,然后就转换成LeetCode547了
2
def getres(n):
f=[0]*(n+1)
f[0]=1
for i in range(1,n+1):
for j in range(i):
f[i]+=f[j]*f[i-1-j]
return f
print getres(n//2)
3
def slide(data,choice):
if choice==2:#down
for lie in range(4):
times=3
for hang in range(3,-1,-1):
if data[hang][lie]:
data[times][lie]=data[hang][lie]
if hang<times:
data[hang][lie]=0
times-=1
if choice==1:#up
for lie in range(4):
times=0
for hang in range(4):
if data[hang][lie]:
data[times][lie] = data[hang][lie]
if hang > times:
data[hang][lie] = 0
times += 1
if choice==3:#left
for hang in range(4):
times=0
for lie in range(4):
if data[hang][lie]:
data[hang][times] = data[hang][lie]
if lie > times:
data[hang][lie] = 0
times += 1
if choice==4:
for hang in range(4):
times=3
for lie in range(3,-1,-1):
if data[hang][lie]:
data[hang][times] = data[hang][lie]
if lie < times:
data[hang][lie] = 0
times -= 1
return data
# data=[[0,0,2,2],[0,0,0,2],[0,0,4,8],[0,0,4,8]]
def getres(data,choice):
data = slide(data,choice)
if choice==2:
for lie in range(4):
for hang in range(3,0,-1):
if data[hang][lie]==data[hang-1][lie]:
data[hang][lie]=data[hang][lie]*2
data[hang-1][lie]=0
if choice==1:
for lie in range(4):
for hang in range(3):
if data[hang][lie]==data[hang+1][lie]:
data[hang][lie] = data[hang][lie] * 2
data[hang + 1][lie] = 0
if choice==3:
for hang in range(4):
for lie in range(3):
if data[hang][lie]==data[hang][lie+1]:
data[hang][lie]=data[hang][lie]*2
data[hang][lie+1]=0
if choice==4:
for hang in range(4):
for lie in range(3,0,-1):
if data[hang][lie]==data[hang][lie-1]:
data[hang][lie]=data[hang][lie]*2
data[hang][lie-1]=0
res=slide(data,choice)
return res
import sys
if __name__ == "__main__":
# 读取第一行的n
n = int(sys.stdin.readline().strip())
ans = 0
res=[]
for i in range(4):
# 读取每一行
line = sys.stdin.readline().strip()
# 把每一行的数字分隔后转化成int列表
values = list(map(int, line.split()))
res.append(values)
result=getres(res,n)
for line in result:
print(' '.join(map(str,line)))
第四题超时了,等大佬