15,935,248 members
1.00/5 (1 vote)
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!

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.
Posted
Updated 7-Nov-12 16:02pm
v2
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.

## Solution 1

enhzflep 8-Nov-12 21:59pm
(Originally posted by OP as a solution)

Those just tell me how to place them on the board they don't tell me how to write code to solve the problem.