สมมติว่าผู้โดยสาร n คนขึ้นเครื่องบินโดยมีที่นั่ง n ที่นั่งพอดี หากผู้โดยสารคนแรกทำตั๋วหายและเลือกที่นั่งแบบสุ่ม แต่หลังจากนั้น ผู้โดยสารที่เหลือจะปฏิบัติตามการดำเนินการเหล่านี้ -
-
ขึ้นที่นั่งของตัวเองที่เขียนไว้ในตั๋วถ้ายังว่าง
-
สุ่มเลือกที่นั่งอื่นเมื่อพบว่ามีที่นั่งว่าง
เราต้องหาความน่าจะเป็นที่คนที่ n จะได้ที่นั่งของตัวเองเป็นเท่าไหร่? ดังนั้นหากอินพุตเป็น 2 เอาต์พุตจะเป็น 0.5 ดังนั้นคนที่สองจึงมีโอกาส 0.5 ที่จะได้ที่นั่งที่สอง (เมื่อคนแรกได้ที่นั่งที่หนึ่ง)
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
ถ้า n เป็น 1 ให้คืนค่า 1 มิฉะนั้น 0.5
ตัวอย่าง (C++)
ให้เราดูการใช้งานต่อไปนี้เพื่อทำความเข้าใจ −
class Solution { public: double nthPersonGetsNthSeat(int n) { if (n == 1) return 1; return 0.5; } };
อินพุต
2
ผลลัพธ์
0.50000