Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมตรวจสอบว่าได้ 24 จากการวางตัวดำเนินการระหว่างตัวเลขใน Python


สมมติว่าเรามีรายการ 4 ตัวเลข (1-9) เรียงลำดับคงที่ วางตัวดำเนินการ +, -, *, / (หารจำนวนเต็ม) ระหว่างตัวเลข และจัดกลุ่มด้วยวงเล็บ ตรวจสอบว่าได้ค่า 24 หรือไม่

เช่น nums = [5,3,6,8,7] ให้ True เพราะ (5*3)-6+(8+7)=24

ขั้นตอนการแก้ปัญหา

  • ฟังก์ชัน recur(arr) คืนค่าทุกค่าที่เป็นไปได้จากการจัดกลุ่มและคำนวณ
  • แบ่ง arr เป็น pre และ suf ทุกตำแหน่ง
  • คำนวณ k+j, k-j, k*j, k//j (ถ้า j!=0)
  • ถ้า arr ความยาว 1 คืนค่าตัวมันเอง
  • ตรวจสอบว่า 24 อยู่ในผลลัพธ์ของ recur(nums) หรือไม่

ตัวอย่างโค้ด

class Solution:
    def solve(self, nums):
        def recur(arr):
            answer = []
            for i in range(len(arr)-1):
                pre, suf = recur(arr[:i+1]), recur(arr[i+1:])
                for k in pre:
                    for j in suf:
                        answer.append(k+j)
                        answer.append(k-j)
                        answer.append(k*j)
                        if j != 0:
                            answer.append(k//j)
            if len(answer)==0 and len(arr)==1:
                answer.append(arr[0])
            return answer
        return 24 in recur(nums)

ob = Solution()
nums = [5,3,6,8,7]
print(ob.solve(nums))

อินพุต

[5, 3, 6, 8, 7]

เอาต์พุต

True