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
是由什么原因导致的?
Fungsi maks anda diberi nilai 0 dalam baris kelima
Sebabnya seperti yang @rayleisure katakan, anda menggunakan
max
di sini sebagai rujukan kepada pembolehubah jenisint
, menghasilkanbukan sahaja menyebabkan fungsi bina dalam gagal, tetapi juga menyebabkan:
Ini kerana anda membuat panggilan ke integer
max
,Ringkasnya, ingatlah untuk tidak menamakan pembolehubah dengan:
kata kunci
fungsi terbina dalam
Nama pustaka standard atau mana-mana pakej/modul yang sedang digunakan
Nama yang sama.
Penyimpangan
Yang berikut adalah di luar topik
Berdasarkan kod semasa anda, nampaknya anda hanya perlu menulis fungsi menulis kelas ini nampaknya berlebihan (melainkan anda melakukan bank soalan dalam talian?)
Tidak perlu secara khusus melepasi panjang senarai Bertanya tentang panjang senarai dalam Python boleh dilakukan dengan mudah dengan
len()
Untuk masalah LIS, saya memudahkan kod anda:
Hanya cari panjang LIS:
Seluruh LIS menuntut ia keluar:
Ujian:
Keputusan:
Soalan yang saya jawab: Python-QA