15,935,248 members

See more:

I have been working on this problem for awhile now and there seems to be a problem with the "good" function which is supposed to check the the board each time a new Queen is laid to make sure it is legal. I believe it has something to do with the final two loops of the function but I can not figure out what. It always seems to allow a Queens to be places diagonally of each other. (Diagonal from top right to bottom left.) PLEASE HELP! Thanks!

Edit: Code wrapped with <pre> tags.

C++

bool good() { int counter = 0; for(int i = 0; i < MAX; i++) { for(int n = 0; n < MAX; n++) { if(board[i][n] == 1) { counter++; if(counter >= 2) { return false; } } } counter = 0; } for(int n = 0; n < MAX; n++) { for(int i = 0; i < MAX; i++) { if(board[i][n] == 1) { counter++; if(counter >= 2) { return false; } } } counter = 0; } int n = 0; for(int s = 0; s < MAX; s++) { for(int i = s; i < MAX; i++) { if(board[i][n] == 1) { counter++; if(counter >= 2) { return false; } } n++; } n = 0; counter = 0; } int i = 0; for(int s = 0; s < MAX; s++) { for(int n = s; n < MAX; n++) { if(board[i][n] == 1) { counter++; if(counter >= 2) { return false; } } i++; } i = 0; counter = 0; } n = 0; for(int s = 7; s <= 0; s--) { for(int i = s; i <= 0; i--) { if(board[i][n] == 1) { counter++; if(counter >= 2) { return false; } } n++; } n = 0; counter = 0; } i = 0; for(int s = 7; s < MAX; s++) { for(int n = s; n <= 0; n--) { if(board[i][n] == 1) { counter++; if(counter >= 2) { return false; } } i++; } i = 0; counter = 0; } return true; }

Edit: Code wrapped with <pre> tags.

Comments

Mohibur Rashid
8-Nov-12 23:27pm

school teach you how how to write code, you will have to find out the solution. If you dont know how to solve this one then you are doomed. even most dumbest one in my school solved it.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

CodeProject,
20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8
+1 (416) 849-8900