Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private void csp() {
- Integer v = getNextUnvisitedVariable();
- if (v == null) {
- // No unassigned variables, found a solution
- solutions.add(Arrays.copyOf(assignments, assignments.length));
- for (int i = 0; i < N; i++)
- assert(isAssignmentValid(i, assignments[i]));
- }
- else {
- visitedVariables[v] = true;
- for (int i = 0; i < N; i++) {
- if (isAssignmentValid(v, i)) {
- board[v][i] = BlockType.Q;
- assignments[v] = i;
- List<BoardPosition> conflictedPositions = markConflictedPositions(v, i);
- boolean shouldContinue = forwardChecking();
- if (shouldContinue)
- csp();
- unmarkConflictedPositions(conflictedPositions);
- assignments[v] = null;
- board[v][i] = BlockType.None;
- }
- }
- visitedVariables[v] = false;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement