Results 1 to 2 of 2

Thread: N Queen

  1. #1

    Thread Starter
    Junior Member
    Join Date
    Apr 2006
    Posts
    17

    N Queen

    hi

    i was wonder if anyone can help me change my code from two dimensional array to one dimen. ..

    and it is suppose to print all the result..why does my only print once.

    thanks

    Code:
    #include <iostream>
    using namespace std;
    
    #define BOARDSIZE 6
    
    bool ok(int q[BOARDSIZE][BOARDSIZE], int row,int col);
    void backtrack(int q[BOARDSIZE][BOARDSIZE], int row,int col);
    void print(int q[BOARDSIZE][BOARDSIZE]);
    
    int main () {
    
    	cout << "N Queens solution for N= " << BOARDSIZE << endl << endl;
    	int q[BOARDSIZE][BOARDSIZE]= {0}, c, i;
    	int cntr = 0;
    	q[0][0] = 0;
    	c = 0;
    
    	while ( c < BOARDSIZE) {
    		i = -1;
    		while(i < BOARDSIZE) {
    			i++;
    			if(i == BOARDSIZE) {
    				backtrack(q,i,c);
    				continue;
    			}
    			if(ok(q,i,c)) break;
    		}
    		c++;
    	}
    	print(q);
    }
    
    bool ok(int q [BOARDSIZE][BOARDSIZE],int row, int col) {
    	for(int i = 0; i < col; i++) {
    		if(q[row][i] == 1)
    			return false;
    	}
    
    	for(int i = 1; (row - i) >= 0 && (col -i) >= 0; i++) {
    		if(q[row - i][col-i] == 1) 
    			return false;
    	}
    
    	for(int i = 1; (row + i) < BOARDSIZE && (col-i) >= 0; i++) {
    		if(q[row+i][col-i] == 1)
    			return false;
    	}
    
    	q[row][col] = 1;
    	return true;
    }
    void backtrack(int q[BOARDSIZE][BOARDSIZE], int row, int col) {
    	col--;
    	row = 0;
    	while(q[row][col] == 0) row++;
    	q[row][col] = 0;
    }
    
    void print(int q[BOARDSIZE][BOARDSIZE]) {
    	static int count = 0;
    	cout << ++count << endl;
    	int i, j;
    	for(i = 0; i <BOARDSIZE; i++) {
    		for(j = 0; j < BOARDSIZE; j++)
    			cout << q[i][j] << " ";
    		cout << endl;
    	}
    	cout << endl;
    }

  2. #2

    Thread Starter
    Junior Member
    Join Date
    Apr 2006
    Posts
    17

    Re: N Queen

    nm i got it..

    but i sitll didnt solve on how to make it print more than one solution..

    it would print all the solution if i used goto statements..but cant use those =[

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width