เรียกค่าที่เพื่อนของเราคิดเอาไว้ว่า "ค่าคำตอบ" หากเราทราบว่าค่าคำตอบเป็นจำนวนเต็มที่อยู่ในช่วง แล้วเราถามค่า เพื่อนไป เราจะสามารถแบ่งได้ออกเป็น 3 กรณีได้แก่
- เพื่อนตอบว่า "ใช่" ดังนั้น เป็นค่าคำตอบ
- เพื่อนตอบว่า "เลขที่คิดมีค่าน้อยกว่า " ดังนั้น ค่าคำตอบอยู่ในช่วง
- เพื่อนตอบว่า "เลขที่คิดมีค่ามากกว่า " ดังนั้น ค่าคำตอบอยู่ในช่วง
หาก จะมีเพียงกรณีที่ 1 เท่านั้นที่เป็นไปได้ แต่หาก ในกรณีที่แย่ที่สุด จะเป็นไปได้เพียงกรณีที่ 2 หรือ 3 เท่านั้น ทั้งนี้ไม่ว่ากรณีไหน เราก็ต้องจ่ายเงิน เหมือนกัน
เราจะใช้ Dynamic Programming ในการคำนวณคำตอบ กำหนดให้ คือเงินที่น้อยที่สุดที่เราต้องจ่ายในกรณีที่แย่ที่สุดเมื่อทราบอยู่แล้วว่าค่าคำตอบอยู่ภายในช่วง
- สำหรับ เป็น Base Case ตามที่ได้กล่าวไว้ในย่อหน้าที่แล้ว
- เมื่อ
หากเราทายเลข ในกรณีที่แย่ที่สุดจะเป็นกรณี 2 หรือ 3 กรณีใดกรณีหนึ่งที่ทำให้เราจะต้องจ่ายเงินมากที่สุด นั่นคือ แต่เนื่องจากเราสามารถเลือกถามค่าใดๆ ก็ได้ที่อยู่ภายในช่วง เราจึงควรเลือกค่าที่ทำให้เราจ่ายเงินน้อยที่สุดนั่นเอง
Time Complexity: