Original title Address
It's almost no different from n-queens, it seems to be simpler.
Code:
1 intSolveintRow, vector<BOOL> &col, vector<BOOL> left, vector<BOOL>Right ) {2 if(Row = =0)3 return 1;4 5vector<BOOL> Avail (col.size (),false);6 for(inti =0; I < col.size (); i++)7Avail[i] =! (Col[i] | | left[i] | |right[i]);8 9 for(inti =0; I < col.size ()-1; i++)TenLeft[i] = left[i +1]; OneLeft[col.size ()-1] =false; A for(inti = col.size ()-1; i >0; i--) -Right[i] = right[i-1]; -right[0] =false; the - intres =0; - for(inti =0; I < col.size (); i++) { - if(!Avail[i]) + Continue; -Col[i] =true; + if(I >0) Left[i-1] =true; A if(I < col.size ()-1) Right[i +1] =true; atRes + = Solve (Row-1, col, left, right); - if(I < col.size ()-1) Right[i +1] =false; - if(I >0) Left[i-1] =false; -Col[i] =false; - } - in returnRes; - } to + intTotalnqueens (intN) { -vector<BOOL> col = vector<BOOL> (n,false); thevector<BOOL> left = vector<BOOL> (n,false); *vector<BOOL> right = vector<BOOL> (n,false); $ returnsolve (n, col, left, right);Panax Notoginseng}
leetcode#52 N-queens II