/*set ts=4 ; autoindent */ using System; /* * The classic n-queens problem */ public class chessboard { public int n; public int rows; public int[] positions; public bool[] columns; public bool[] diags; public bool[] counterdiags; /* * Initialize an nxn chessboard with no queens */ public chessboard(int n) { this.n=n; rows=0; // no queens added yet positions = new int[n]; columns = new bool[n]; diags = new bool[2*n-1]; counterdiags = new bool[2*n-1]; for (int i = 0; i < n; i++) positions[i] = -1; for (int i = 0; i < n; i++) columns[i] = false; for (int i = 0; i < 2*n-1; i++) { diags[i] = false; counterdiags[i] = false; } // no columns or diagonals covered yet } public chessboard (chessboard q) { n=q.n; rows=q.rows; positions = new int[n]; columns = new bool[n]; diags = new bool[2*n-1]; counterdiags = new bool[2*n-1]; for (int i = 0; i < n; i++) positions[i] = q.positions[i]; for (int i = 0; i < n; i++) columns[i] = q.columns[i]; for (int i = 0; i < 2*n-1; i++) { diags[i] = q.diags[i]; counterdiags[i] = q.counterdiags[i]; } } public void addQueen(int pos) { positions[rows]=pos; // place queen in current row columns[pos]=true; // cover the column diags[pos-rows+n-1]=true; // cover the diagonal counterdiags[pos+rows]=true;// cover the counter diagonal rows++; // advance to next row } public override String ToString() { String retval=""; for(int i=0;i