تابعی بنویسید که بررسی کند آیا میتوان یک لیست را به دو بخش تقسیم کرد: یکی شامل یک عنصر و دیگری شامل بقیه عناصر، به طوری که مقدار آن یک عنصر برابر با حاصلضرب تمام عناصر باقیمانده باشد. اگر چنین تقسیمی امکانپذیر باشد، مقدار True
و در غیر این صورت مقدار False
را برگردانید.
مثال
can_partition([2, 8, 4, 1]) ➞ True
# 8 = 2 x 4 x 1
نمونه ورودی و خروجی
CanPartition([2, 8, 4, 1]) ➞ True
CanPartition([-1, -10, 1, -2, 20]) ➞ False
CanPartition([-1, -20, 5, -1, -2, 2]) ➞ True
نکات
- لیست ممکن است شامل عناصر تکراری باشد.
- اگر چندین راهحل برای این تقسیمبندی وجود داشته باشد، هر راهحلی کافی است که مقدار
True
برگرداند. - اگر هیچ راهحلی وجود نداشته باشد، مقدار
False
را برگردانید.
CanPartition([2, 8, 4, 1]) ➞ True
CanPartition([-1, -10, 1, -2, 20]) ➞ False
CanPartition([-1, -20, 5, -1, -2, 2]) ➞ True
CanPartition([1, 1, -1, 1]) ➞ False
CanPartition([-1, -1, 1, 1]) ➞ True
CanPartition([0, 5, 1, -1]) ➞ False
CanPartition([0, 0, 1]) ➞ True
نظرات