← Back to Home
ស្វ័យលំដាប់កើនឡើងវែងបំផុត
បញ្ហា dynamic programming ដើម្បីរកប្រវែងនៃស្វ័យលំដាប់វែងបំផុតនៃស្វ័យលំដាប់ដែលបានផ្តល់ឱ្យដែលធាតុទាំងអស់នៃស្វ័យលំដាប់ត្រូវបានតម្រៀបតាមលំដាប់កើនឡើង។
Visualization
Step 1 / 10
Speed:
Details
Analogy
ស្រមៃជួរមនុស្សដែលមានកម្ពស់ផ្សេងៗគ្នា។ អ្នកចង់ជ្រើសរើសក្រុមតូចមួយនៃមនុស្សពីជួរនេះ ដោយរក្សាពួកគេក្នុងលំដាប់ដើមរបស់ពួកគេ ដូច្នេះពួកគេត្រូវបានរៀបចំពីខ្លីបំផុតទៅខ្ពស់បំផុត។ គោលដៅគឺរកក្រុមធំបំផុតដែលអ្នកអាចបង្កើតបែបនេះ។
Purpose
ដើម្បីរកស្វ័យលំដាប់វែងបំផុតដែលធាតុស្ថិតក្នុងលំដាប់កើនឡើងយ៉ាងតឹងរឹង។ ធាតុមិនចាំបាច់ជាប់គ្នាទេ។
Use Cases
ប្រើក្នុងការវិភាគទិន្នន័យ ជីវព័ត៌មានវិទ្យា (ការវិភាគស្វ័យលំដាប់ហ្សែន) និងក្បួនដោះស្រាយផ្គូផ្គងខ្សែអក្សរ។
Algorithm Steps
Line 1
1
create dp array of size n, fill with 1
2
for i = 1 to n-1:
3
for j = 0 to i-1:
4
if arr[i] > arr[j]:
5
dp[i] = max(dp[i], dp[j] + 1)
6
return max(dp)
Current
Executed
Pending
Explanation
What's Happening?
Step 1/10
អារេដំបូង។ យើងនឹងសាងសង់អារេ DP ដែលតំណាងឱ្យប្រវែងនៃ LIS ដែលបញ្ចប់នៅលិបិក្រមនីមួយៗ។
Updates with each step • Clickfor full view
Code Implementation
def length_of_lis(nums):
if not nums:
return 0
dp = [1] * len(nums)
for i in range(1, len(nums)):
for j in range(i):
if nums[i] > nums[j]:
dp[i] = max(dp[i], dp[j] + 1)
return max(dp)