Recursion 用于识别N-Queen解决方案的校验和
我已经通过使用回溯算法解决了N-Queen问题,并且可以在C#中生成所有唯一和不同的解决方案。虽然我已经通过在每一行中找到有效位置来限制递归的级别,但是当N>15时,该算法的速度将非常慢。我怀疑原因是每一个新的解决方案,我必须生成所有8个对称的副本,并检查这与已经找到的解决方案。如果这些都未包含,则可以将新的解决方案添加到唯一的解决方案中 我在某个地方看到了一个关于为每个解决方案附加校验和的提示,并创建了一个字典,其中校验和是关键,解决方案是一个列表。我找不到这篇文章,否则对校验和的概念来说是非常新的Recursion 用于识别N-Queen解决方案的校验和,recursion,dictionary,checksum,backtracking,Recursion,Dictionary,Checksum,Backtracking,我已经通过使用回溯算法解决了N-Queen问题,并且可以在C#中生成所有唯一和不同的解决方案。虽然我已经通过在每一行中找到有效位置来限制递归的级别,但是当N>15时,该算法的速度将非常慢。我怀疑原因是每一个新的解决方案,我必须生成所有8个对称的副本,并检查这与已经找到的解决方案。如果这些都未包含,则可以将新的解决方案添加到唯一的解决方案中 我在某个地方看到了一个关于为每个解决方案附加校验和的提示,并创建了一个字典,其中校验和是关键,解决方案是一个列表。我找不到这篇文章,否则对校验和的概念来说是非
在此问题上的任何帮助都将不胜感激。为N皇后生成哈希或校验和?有几点:
public int hashSolution (Queen[] queens) {
int h = 0;
for (Queen q : queens) {
int queenHash = (q.getX() * 23) + q.getY(); // 23 is a prime.
h += queenHash;
}
return h;
}