网上的方法大多都是基于爆搜的,其中一个较为重要的剪枝是固定第一行然后最后答案乘 (n−1)!。
爆搜是无聊的,我先甩一篇题解:https://blog.csdn.net/max_kibble/article/details/78990728。
想要爆搜的自己去看,加个剪枝跑进 20 秒不是问题。
https://www.combinatorics.org/ojs/index.php/eljc/article/view/v17i1a1/pdf 根据这篇论文说现在已经有了 O(2n2×poly(n)) 的做法,大家可以自行阅读。
这里仅列出一些资料供大家研究。