23
枚举排列
给定一些正整数生成对象的所有排列。nñnnñn 细节 排列是没有固定点的排列。(这意味着在每个排列编号中,i一世i都不能位于第i一世i个条目中)。 输出应包含数字(1,2,…,n)(1个,2,…,ñ)(1,2,\ldots,n)(或(0,1,2,…,n−1)(0,1个,2,…,ñ-1个)(0,1,2,\ldots,n-1))的排列。 您也可以始终打印(n,n−1,…,1)(ñ,ñ-1个,…,1个)(n,n-1,\ldots,1)(或分别(n−1,n−2,…,1,0)(ñ-1个,ñ-2,…,1个,0)(n-1,n-2,\ldots,1,0))的排列,但必须指定。 输出必须是确定性的,也就是说,每当调用某个给定nñn作为输入的程序时,输出都应该是相同的(这包括排列顺序必须保持相同),并且完整的输出必须在每次有限的时间(以概率1这样做是不够的)。 您可以假设n⩾2ñ⩾2 n \geqslant 2 对于某些给定的您可以生成所有排列,也可以选择另一个整数作为索引并打印第个排列(按您选择的顺序)。nñnkķkkķk 例子 请注意,排列顺序不必与此处列出的顺序相同: 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记录了排列的次数。