thanks guys

On Fri, Sep 2, 2011 at 1:53 AM, Don <dondod...@gmail.com> wrote:

> There are several issues.
> There is nothing to back out a move if it fails. After the recursive
> call to queen, you need an "else" which unmarks the board. That will
> be hard to do, because there isn't a good way to remember what was
> marked before.
> I don't think you need to loop i from p to 7. The parameter p should
> indicate the row where you will place the queen. Each row gets one
> queen, so just select a column on that row.
> Count is incremented every time that you try a location, so all the
> rejected positions will still be in the position array.
> Your function never returns false.
> Below is working code.
>
> Don
>
> // Solve 8 queens problem. queens[i] will contain the column of the
> queen in row i.
> bool placeQueens(int row, int *queens)
> {
>  if (row == 8) return true;
>
>  // Look for locations to place queen on current row
>  for(queens[row] = 0; queens[row] < 8; ++queens[row])
>  {
>    // Determine if previously placed queens are attacking that
> location
>    for(int i = 0; i < row; ++i)
>      if ((queens[row] == queens[i]) ||
>          (queens[row] == (queens[i]-row+i)) ||
>          (queens[row] == (queens[i]+row-i)))
>        break;
>
>    // Try to fill remaining rows
>    if ((i == row) && placeQueens(row+1, queens)) return true;
>  }
>  // No solution found. Backtrack and try something else.
>  return false;
> }
>
> On Sep 1, 2:30 pm, mc2 verma <qlearn...@gmail.com> wrote:
> > hey guys ,
> >
> > I am trying to solve 8-queens problem using backtracking. Here is my
> algo.
> > Could someone please tell me what is wrong in this code??
> >
> > bool queen(int p,int count , int position[][])
> > {
> >   if(count == 8)  return true;
> >
> >   for(int i=p,i<8;i++)
> >     for(int j=0;j<8;j++)
> >         if(marked(i,j) == false )   // finding secure position on board
> >          {
> >             markboard(i,j);            // if found any secure position
> then
> > mark all board positions which are in range of queen.
> >             position[count][count]={i,j};   //save position for final
> answer
> >             count++;
> >             if(queen(p+1,count,position[][]) == true)
> >               return true;
> >          }
> >
> > }
>
> --
> You received this message because you are subscribed to the Google Groups
> "Algorithm Geeks" group.
> To post to this group, send email to algogeeks@googlegroups.com.
> To unsubscribe from this group, send email to
> algogeeks+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/algogeeks?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algogeeks@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to