错误:“ int”对象在python中不可下标

问题描述

我正在尝试解决hackerearth中的问题,下面的代码给我一个错误:

"int" object is not subscriptable- at line 4 (if(dp[g][p][d] != -1):)

我知道当我们尝试索引一个int obj时会发生此错误,但是dp是3d列表。

def max_val(i,g,p,d):
    if(i==n or g==maxG or p==maxP or d==maxD):
        return 0;
    if(dp[g][p][d] != -1):
        return dp[g][p][d]
    
    val=dp[g][p][d]
    if(g<maxG):
        val=max(val,gold[i]+max_val(i+1,g+1,d))
    if(p<maxP):
        val=max(val,plat[i]+max_val(i+1,p+1,d))
    if(d<maxD):
        val=max(val,dia[i]+max_val(i+1,d+1))

    return val;

n=int(input())

maxG,maxP,maxD=[int(x) for x in input().split()]

total=0

gold=[]
plat=[]
dia=[]
dp=[[-1 for x in range(n)] for x in range(n)]

for _ in range(n):
    x=[int(i) for i in input().split()]
    gold.append(x[0])
    plat.append(x[1])
    dia.append(x[2])

max_val(0,0)

解决方法

dp=[[-1 for x in range(n)] for x in range(n)]将返回一个二维列表,因为您是通过在外部列表中进行[-1 for x in range(n)]来创建列表的。您可以创建如下的三维列表:

dp=[[[-1 for x in range(2)] for x in range(2)] for x in range(2)]
print(dp) # outputs [[[-1,-1],[-1,-1]],[[-1,-1]]]
print(dp[0][0][0]) # outputs -1

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...