ปริศนาน้ำพุ Champaign
แก้วน้ำเปล่าเรียงตามลำดับต่อไปนี้: เมื่อคุณเทของเหลวลงในแก้วที่ 1 ถ้ามันเต็มแล้วของเหลวที่เพิ่มเข้ามาจะถูกใส่ลงในแก้ว 2 และ 3 ในปริมาณที่เท่ากัน เมื่อแก้ว 2 เต็มแล้วของเหลวพิเศษจะถูกปล่อยออกมาเป็น 4 และ 5 เป็นต้น เมื่อให้ของเหลว N ลิตรและความจุสูงสุดของแก้วแต่ละแก้วคือ 1 ลิตรให้ปริมาณของของเหลวในแก้วใด ๆ ถ้าคุณล้างของเหลว N ลิตรโดยเทลงในแก้วโดยเติมฟังก์ชันgetWaterInBucket(int N, int X)ที่ X คือหมายเลขแก้ว ตัวอย่างเช่นถ้าฉันต้องการมี 4 ลิตรที่จุดเริ่มต้นและฉันต้องการค้นหาน้ำในแก้ว 3 ฟังก์ชั่นคือgetWaterInBucket(4, 3) ฉันจะแก้ปัญหานี้โดยทางโปรแกรมได้อย่างไร ฉันพยายามหาวิธีแก้ปัญหาทางคณิตศาสตร์โดยใช้สามเหลี่ยมของปาสกาล สิ่งนี้ไม่ได้ผล ฉันถือว่ามันเป็นต้นไม้ดังนั้นฉันจึงสามารถเพิ่มพารามิเตอร์เช่นนี้getWaterInBucket(BTree root, int N, int X)แล้วลองแก้ปัญหาแบบเรียกซ้ำสำหรับแต่ละระดับ แต่ไม่อนุญาตให้ใช้พารามิเตอร์ในปัญหานี้ มีบางอย่างชัดเจนหรือไม่?