回复: Prime Ring 嗯嗯,说一下上次我想到的解法:
做一个无向图,图中节点就是 1...n 的数字,然后如果两个数字之和为素数,就在它们之间连一条边。那么上述问题就变成找出这个图中所有长度为 n 的环(也就是哈密尔顿环啦)。解这个问题可以用枚举所有环的办法,也就是找出所有的基本环,然后枚举它们的线性组合。这个是经典问题,资料比较多我就不说了。
这个算法的优势在于利用经典问题的现成算法,应该是比较优的。枚举基本环的线性组合看上去很费时间,但是考虑到我们只需要哈密尔顿环,其实搜索的时候剪枝很容易,应该会比较快。主要问题在于没有利用素数的性质。 |