cpp 100pts代码转换成python,结果60pts,且不说超时的部分,不是很清楚为什么甚至还有wa
import numpy as np
if __name__=="__main__":
n,m=map(int,input().split())
dp=np.zeros((m+1,n+1,m+2,2))
f=np.empty((n+1,m+1))
# print(dp)
for i in range(n):
temp=list(map(int,input().split()))
for j in range(m):
f[i+1][j+1]=int(temp[j])
# for i in range(1,n+1):
# for j in range(1,m+1):
# print(f"{int(f[i][j])} ",end="")
# print()
for i in range(1,m+1):
for j in range(1,n+1):
for k in range(1,m+1):
#左边
cntr=i-k;
r=m-cntr+1
if r<=m+1 and r>k:
dp[i][j][k][0]=max(dp[i][j][k][0],dp[i-1][j][k-1][0]+f[j][k]*(1<<i))
dp[i][j][k][0]=max(dp[i][j][k][0],dp[i-1][j][r][1]+f[j][k]*(1<<i))
#右边
l=i-(m-k+1)
if l>=0 and l<k:
dp[i][j][k][1]=max(dp[i][j][k][1],dp[i-1][j][k+1][1]+f[j][k]*(1<<i))
dp[i][j][k][1]=max(dp[i][j][k][1],dp[i-1][j][l][0]+f[j][k]*(1<<i))
ans=0
for i in range(1,n+1):
mx=0
for j in range(1,m+1):
mx=max(mx,dp[m][i][j][0],dp[m][i][j][1])
ans+=mx
print(int(ans))