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
是由什么原因导致的?
5 行目で max 関数に値 0 が割り当てられ、ライブラリ関数
と同じ名前にならないように変数の名前を変更します。その理由は、@rayleisure が言ったように、ここでは
が返されるためです。 リーリーmax
を型int
の変数への参照として使用し、結果としては、組み込み関数が失敗するだけでなく、次の原因も引き起こします。
リーリーこれは、整数
を呼び出したためです。max
、つまり、変数に次のような名前を付けないでください。
キーワード
組み込み関数
使用中の標準ライブラリまたはパッケージ/モジュールの名前
同じ名前です。
余談
以下は本題とは関係ありません
現在のコードから判断すると、このクラスを作成する必要があるのは関数のみであるようです (オンライン質問バンクを実行している場合を除きますか?)
リストの長さを具体的に渡す必要はありません。Python でリストの長さについて尋ねるには、
len()
LIS の問題については、コードを簡略化しました:
LIS の長さのみを検索します:
リーリーLIS 全体がそれを公表することを要求しています:
リーリーテスト:
リーリー結果:
リーリー私が回答した質問: Python-QA