N Queen Problem

The N Queen, also known as eight queens puzzle, is the problem of placing N chess queens on an N×N chessboard so that no two queens attack each other.



									Public Const N As Integer = 4

Private Shared Sub PrintSolution(board As Integer(,))
	For i As Integer = 0 To N - 1
		For j As Integer = 0 To N - 1
			Console.Write(" {0} ", board(i, j))
		Next

		Console.WriteLine()
	Next
End Sub

Private Shared Function IsSafe(board As Integer(,), row As Integer, col As Integer) As Boolean
	Dim i As Integer, j As Integer

	For i = 0 To col - 1
		If Convert.ToBoolean(board(row, i)) Then
			Return False
		End If
	Next

	i = row
	j = col
	While i >= 0 AndAlso j >= 0
		If Convert.ToBoolean(board(i, j)) Then
			Return False
		End If
		i -= 1
		j -= 1
	End While

	i = row
	j = col
	While j >= 0 AndAlso i < N
		If Convert.ToBoolean(board(i, j)) Then
			Return False
		End If
		i += 1
		j -= 1
	End While

	Return True
End Function

Private Shared Function SolveNQ(board As Integer(,), col As Integer) As Boolean
	If col >= N Then
		Return True
	End If

	For i As Integer = 0 To N - 1
		If IsSafe(board, i, col) Then
			board(i, col) = 1

			If SolveNQ(board, col + 1) Then
				Return True
			End If

			board(i, col) = 0
		End If
	Next

	Return False
End Function

Public Shared Function Solve() As Boolean
	Dim board As Integer(,) = {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}

	If SolveNQ(board, 0) = False Then
		Return False
	End If

	PrintSolution(board)
	Return True
End Function
								


Example

									Dim isSolved As Boolean = Solve()
								


Output

									isSolved: true

Output of Solve function:
 0  0  1  0 
 1  0  0  0 
 0  0  0  1 
 0  1  0  0