กำหนดเส้นทางซ้าย ขวา และเดือยดังแสดงในรูปด้านล่าง มี NS รถบรรทุกจากมูลค่า 1 ถึง NS จัดอยู่ในแทร็กด้านซ้าย เราสามารถย้ายรถบรรทุก N รถบรรทุกไปยังแทร็กที่ถูกต้องได้โดยตรง แต่อาจมีความเป็นไปได้มากกว่าที่จะย้ายรถบรรทุกไปยังแทร็กที่ถูกต้องโดยใช้รางเดือย เราสามารถเคลื่อนย้ายรถบรรทุกคันใดก็ได้เพื่อเดือยแทร็กแล้วย้ายไปยังแทร็กที่ถูกต้อง งานคือการพิมพ์ลำดับการเปลี่ยนแปลงที่เป็นไปได้ทั้งหมดที่ NS สามารถเคลื่อนย้ายรถบรรทุกจากทางซ้ายไปทางขวาได้
บันทึก: เมื่อรถบรรทุกถูกย้ายจากรถบรรทุกด้านซ้ายไปด้านขวา/ทางเดือย จะไม่สามารถย้ายไปทางซ้ายได้อีก
ตัวอย่าง:
Input: N = 2 Output: 1 2 2 1 Explanation: For the first permutation: left[] = {1, 2} right[] = {}, and spur[] = {} The truck with value 2 moved to the right track, then left[] = {1} right[] = {2}, and spur[] = {} Now moving with value 1 to the right track, then left[] = {} right[] = {1, 2}, and spur[] = {} For the second permutation: left[] = {1, 2} right[] = {}, and spur[] = {} The truck with value 2 move to the spur track, then left[] = {1} right[] = {}, and spur[] = {2} The truck with value 1 move to the right track, then left[] = {} right[] = {1}, and spur[] = {2} The truck with value 2 in the spur track move to the right track, then left[] = {} right[] = {2, 1}, and spur[] = {} Input: N = 3 Output: 1 2 3 2 1 3 3 2 1 3 1 2 2 3 1
แนะนำ: โปรดลองใช้วิธีการของคุณบน {ที่นี่} ขั้นแรกก่อนที่จะดำเนินการแก้ไข
เข้าใกล้: ปัญหานี้เป็นรูปแบบของ หอคอยแห่งฮานอย และสามารถแก้ไขได้โดยใช้ การเรียกซ้ำ . ด้านล่างนี้เป็นกรณีต่อไปนี้:
- กรณีที่ 1: เราสามารถย้ายรถบรรทุกจากทางซ้ายไปยังทางเดือย และตรวจสอบรถบรรทุกที่เหลือทางซ้ายและทางเดือยแบบวนซ้ำ
- กรณีที่ 2: เราสามารถย้ายรถบรรทุกจากทางเดือยไปทางขวาและตรวจสอบรถบรรทุกที่เหลือของทางซ้ายและทางเดือย
ด้านล่างนี้เป็นขั้นตอน:
- ในแต่ละขั้นตอน เราสามารถเคลื่อนย้ายรถบรรทุกจากทางซ้ายไปยังทางเดือย หรือจากทางเดือยไปยังทางขวา
- ย้ายรถบรรทุกหนึ่งคันจากทางซ้ายไปยังทางเดือย และเรียกรถบรรทุกที่เหลือทางซ้ายและทางเดือยแบบเรียกซ้ำ
- เมื่อมีการเรียกซ้ำ หากแทร็กอินพุตว่างเปล่า ให้ย้ายรถบรรทุกทุกคันบนแทร็กเดือยไปยังแทร็กที่ถูกต้องและพิมพ์การเรียงสับเปลี่ยนปัจจุบันบนแทร็กที่ถูกต้อง
#อัลกอริทึม #combinatorial #mathematical #permutation
www.geeksforgeeks.org
การเปลี่ยนแปลงที่เป็นไปได้ที่รางรถไฟ
พอร์ทัลวิทยาการคอมพิวเตอร์สำหรับผู้คลั่งไคล้ มันมีการเขียนที่ดีคิดดีและอธิบายได้ดีเกี่ยวกับวิทยาการคอมพิวเตอร์และบทความการเขียนโปรแกรมแบบทดสอบ