สมมติว่าเรามีตารางที่มี n แถวและ m คอลัมน์ Amal และ Bimal กำลังเล่นเกมบนกริดนั้น กฎของเกมมีดังนี้ -
อามาลวางกระเบื้องดอกบัวสีขาวไว้ที่แถวบนสุด และพิมาลวางกระเบื้องตัวหนอนไว้ที่แถวล่าง Amal เริ่มเกมและพวกเขากำลังเล่นสลับกัน Amal สามารถย้ายไทล์ของเขาไปยัง 8 เซลล์ที่อยู่ติดกันภายในตารางของเซลล์ปัจจุบันได้ แต่ไทล์หนอนผีเสื้อของ Bimal สามารถเลื่อนไปทางซ้ายหรือขวาภายในกริด หรือคงอยู่ที่ตำแหน่งเดิม เป้าหมายของ Amal คือการจับ Bimal โดยใช้การเคลื่อนไหวน้อยที่สุด ในขณะที่ Bimal (ที่มีแผ่นหนอนผีเสื้อ) ต้องเอาชีวิตรอดให้นานที่สุด หากพวกเขาสุ่มเลือกสองคอลัมน์เพื่อวางดอกบัวและหนอนผีเสื้อ เราก็ต้องหาจำนวนการเคลื่อนไหวที่คาดไว้เพื่อชนะเกมนี้โดย Amal
ดังนั้น หากอินพุตเท่ากับ n =5 m =7 เอาต์พุตจะเป็น 4.571428571428571
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- r :=0
- สำหรับ l ในช่วง 0 ถึง m - 1 ให้ทำ
- อุณหภูมิ :=n - 1.0
- ถ้า l>=n แล้ว
- อุณหภูมิ :=อุณหภูมิ + (l - n + 1) * ((l - 1) / ม.)
- ถ้า l
- อุณหภูมิ :=อุณหภูมิ + (m - n - l) * ((m - l - 2) / m)
- r :=r + อุณหภูมิ / m
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
def solve(n, m): r = 0 for l in range(m): temp = n - 1.0 if l >= n: temp += (l - n + 1) * ((l - 1) / m) if l < m - n: temp += (m - n - l) * ((m - l - 2) / m) r += temp / m return r n = 5 m = 7 print(solve(n, m))
อินพุต
5, 7
ผลลัพธ์
4.571428571428571