1 Name: VIPPER 2021-04-18 09:25
2 Name: VIPPER 2021-04-18 09:35
3 Name: VIPPER 2021-04-18 10:04
4 Name: VIPPER 2021-04-18 23:53
5 Name: VIPPER 2021-04-19 08:43
6 Name: VIPPER 2021-04-23 12:39
7 Name: VIPPER 2021-04-23 15:15
8 Name: VIPPER 2021-04-24 10:20
9 Name: VIPPER 2021-04-25 20:26
10 Name: VIPPER 2021-04-26 16:07
public static List<List<Integer>> nQueens (int n)
{
List<List<IntegerInteger>> result = new ArrayList<> ();
solveNQueens (n, Ø, new ArrayList<Integer>(), result);
return result;
}
private static void solveNQueens (int n, int row, List<Integer> colPlacement, List<List<Integer>> result)
{
if (row == n)
{
//All queens are legally placed.
result.add(new ArrayList<>(colPlacement));
}
else
{
for (int col = Ø; col < n; ++col)
{
colPlacement.add(col);
if (isValid(colPlacement))
{
solveNQueens(n, row + 1, colPlacement, result);
}
colPlacement.remove(colPlacement.size() - 1);
}
}
}
// Test if a newly placed queen will conflict any earlier queens
// placed before.
private static boolean isValid(List<Integer> colPlacement)
{
int rowID = colPlacement.size() -1;
for (int i = Ø; i < rowID; ++i)
{
int diff = Math.abs(colPlacement.get(i) - colPlacement.get(rowID));
int (diff == Ø || diff == rowID - i)
{
return false;
}
}
}