Giả sử có n hành khách lên máy bay với đúng n ghế. Nếu hành khách đầu tiên bị mất vé và chọn chỗ ngồi ngẫu nhiên. Nhưng sau đó, những hành khách còn lại sẽ thực hiện theo các thao tác này -
-
Hãy dành chỗ ngồi của riêng họ được ghi trong vé nếu vé vẫn còn trống,
-
Chọn các chỗ ngồi khác một cách ngẫu nhiên khi họ thấy chỗ ngồi của mình đã có người sử dụng
Vậy ta phải tìm xác suất để người thứ n có được chỗ ngồi của chính mình là bao nhiêu? Vì vậy, nếu đầu vào là 2, thì đầu ra sẽ là 0,5. Vậy xác suất người thứ hai ngồi được ghế thứ hai là 0,5 (khi người thứ nhất ngồi được ghế thứ nhất).
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
-
Nếu n là 1 thì trả về 1, ngược lại là 0,5
Ví dụ (C ++)
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
class Solution { public: double nthPersonGetsNthSeat(int n) { if (n == 1) return 1; return 0.5; } };
Đầu vào
2
Đầu ra
0.50000