class LongestIncreasingSubsequence:
def getLIS(self, A, n):
# write code here
dp=[0 for i in range(n)]
dp[0]=1
max=0
print dp
for i in range(n):
now=0
if i!=0:
res=1
for j in range(i):
if A[i]>A[j]:
res=dp[j]
now=now +1
if now>=max:
max=now
dp[i]=res+1
else:
dp[i]=res
print dp
#return max(dp)
kk=LongestIncreasingSubsequence()
kk.getLIS([1,4,2,5,3],5)
其中dp 是一个以int类型为成员的list
而使用max()函数时却会报错
TypeError: 'int' object is not callable
是由什么原因导致的?
PHPz2017-04-18 09:24:28
5번째 줄에서 max 함수에 0 값이 할당되었습니다. max 함수는 라이브러리 함수와 동일한 이름을 갖지 않도록 변수 이름을 바꿉니다.
伊谢尔伦2017-04-18 09:24:28
이유는 @rayleisure가 말했듯이 여기에서 max
유형의 변수에 대한 참조로 int
을 사용하여
내장 기능이 실패할 뿐만 아니라 다음과 같은 원인도 발생합니다.
으아악정수 max
,
간단히 말하면 다음과 같은 변수 이름을 지정하지 마세요.
키워드
내장 기능
사용 중인 표준 라이브러리 또는 패키지/모듈의 이름
같은 이름이에요.
다음은 주제와 관련이 없습니다
현재 코드로 볼 때 함수만 작성하면 되는 것 같습니다. (온라인 문제은행을 사용하지 않는 한) 이 클래스를 작성하는 것은 중복된 것 같습니다.
목록의 길이를 전달할 필요가 없습니다. Python에서 목록의 길이를 묻는 것은 len()
LIS 문제의 경우 코드를 단순화했습니다.
LIS의 길이만 찾으세요:
으아악LIS 전체가 나오길 요구하고 있습니다:
으아악테스트:
으아악결과:
으아악내가 답변한 질문: Python-QA