23
แจกแจง Derangements
รับจำนวนเต็มบวกnnnสร้าง derangements ทั้งหมดของnnnวัตถุ รายละเอียด การเรียงสับเปลี่ยนเป็นการเปลี่ยนแปลงที่ไม่มีจุดคงที่ (ซึ่งหมายความว่าในทุกหมายเลข derangement iiiไม่สามารถอยู่ในรายการiii th) ผลลัพธ์ควรประกอบด้วยตัวเลข(1,2,…,n)(1,2,…,n)(1,2,\ldots,n) (หรืออีกทางหนึ่ง(0,1,2,…,n−1)(0,1,2,…,n−1)(0,1,2,\ldots,n-1) ) คุณสามารถพิมพ์ Derangements ของ(n,n−1,…,1)(n,n−1,…,1)(n,n-1,\ldots,1) (หรือ(n−1,n−2,…,1,0)(n−1,n−2,…,1,0)(n-1,n-2,\ldots,1,0)ตามลำดับ) แต่คุณต้องระบุ เอาท์พุทจะต้องถูกกำหนดไว้นั่นคือเมื่อใดก็ตามที่โปรแกรมถูกเรียกด้วยบางอย่างให้nnnเป็นอินพุทเอาท์พุทควรจะเหมือนกัน (ซึ่งรวมถึงคำสั่งของ derangements จะต้องยังคงเหมือนเดิม) และเอาท์พุททั้งหมดจะต้องทำภายใน จำนวน จำกัด ของเวลาทุกครั้ง (ไม่เพียงพอที่จะทำเช่นนั้นกับความน่าจะเป็น 1) คุณสามารถสันนิษฐานได้ว่าn⩾2n⩾2 n \geqslant 2 สำหรับบางnnnคุณสามารถสร้างความแตกต่างทั้งหมดหรือคุณสามารถใช้จำนวนเต็มkkkอื่นที่ทำหน้าที่เป็นดัชนีและพิมพ์kkk -th derangement (ตามลำดับที่คุณเลือก) ตัวอย่าง โปรดทราบว่าคำสั่งของ derangements ไม่จำเป็นต้องเหมือนกับที่แสดงไว้ที่นี่: n=2: (2,1) n=3: (2,3,1),(3,1,2) n=4: (2,1,4,3),(2,3,4,1),(2,4,1,3), (3,1,4,2),(3,4,1,2),(3,4,2,1), (4,1,2,3),(4,3,1,2),(4,3,2,1) OEIS A000166นับจำนวนความเสียหาย