This is the N-Queens problem solution with a backtraking approach, look here for the N-Queens brute force approach.

If you are not familiar with the N-Queens problem look here for an explanation.

You can find the complete code for this post here:

The main difference from this one and the brute force approach is that we will check if a current permutation is a viable solution every time we add a queen, and if it’s not we will not continue pursuing that particular permutation:

static void findSolutions(LinkedHashSetWrapper perm, int n){
    if(perm.size() == n) {
    for(int i = 0; i < n; i++){
        if(!perm.contains(i)) {
                findSolutions(perm, n);

In the next image you can see a solution for N = 4 (clic to enlarge)

backtracking solution

Download the complete code from this post here