网上的方法大多都是基于爆搜的,其中一个较为重要的剪枝是固定第一行然后最后答案乘 $(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(2^{n^2} \times \operatorname{poly}(n))$ 的做法,大家可以自行阅读。
这里仅列出一些资料供大家研究。