สมมติว่ามีรายการตัวเลขที่ไม่ซ้ำกัน nums และตัวเลข k ต้องการหาจำนวนการจัดหมู่ (combinations) ที่ผลรวมเท่ากับ k สามารถนำตัวเลขซ้ำใช้ได้
ตัวอย่าง: nums = [2, 4, 5], k = 4 ผลลัพธ์คือ 2 กลุ่มคือ [2, 2] และ [4]
ขั้นตอนการแก้ปัญหา
- สร้าง
tableขนาดk+1เติม 0, ตั้งtable[0] = 1 - วนลูปแต่ละ
numในnums:- วน
iจากnumถึงk:table[i] += table[i - num]
- วน
- คืนค่า
table[k]
ตัวอย่างโค้ด
class Solution:
def solve(self, nums, k):
table = [1] + [0] * k
for num in nums:
for i in range(num, k + 1):
table[i] += table[i - num]
return table[k]
ob = Solution()
nums = [2, 4, 5]
k = 4
print(ob.solve(nums, k))
อินพุต
[2, 4, 5], 4
เอาต์พุต
2