我找到了N-queen拼图的源代码,我无法绕过它。我是递归函数的新手。如果有人可以为我简化这部分代码并解释它是如何落后的。我四处搜寻,无法弄明白。
void solve(int k)
{
if (k == N) /// We placed N-1 queens (0 included), problem solved!
{
///Solution found!
cout << "Solution: ";
for (int i = 0; i < N; i++)
cout << position[i] << " ";
cout << endl;
}
else
{
for (int i = 0; i < N; i++) /// Generate ALL combinations
{
/// Before putting a queen (the k-th queen) into a row, test it for safeness
if (isSafe(k, i))
{
position[k] = i;
/// Place another queen
solve(k + 1);
}
}
}
}
答案 0 :(得分:0)
以下是算法的工作原理:
k
个皇后或B)没有有效的女王位置。您可以清楚地看到回溯发生在第3步。如果您已达到死胡同,请继续修改上一篇文章的位置,直至找到有效的解决方案。