TopcoderArchiveVisit Topcoder
SRM12 Dec 2001
SRM 49

SuperQueen

Problem statement, definition, constraints, and public examples.

Problem Statement

PROBLEM STATEMENT
 
Now you are going to solve a special variant of the famous N-queen problem.
Ordinary queens can threaten other pieces vertically and horizontally (like
rooks) and diagonally (like bishops). Our super-queens can also threaten like
knights.  As illustrated below, a knight moves two cells in one direction and
then one cell in an orthogonal (perpendicular) direction. 
 
Here are four diagrams that show the set of cells on a chess board threatened
by Rooks, Bishops, Knights, and Super-Queens, respectively.  R represents a
rook, B represents a bishop, K represents a Knight, S represents a super-queen,
X represents a cell on the chess board that is threatened, - represents a cell
that is unoccupied.

Rook                Bishop              Knight              Super-Queen
- - - X - - -       X - - - - - X       - - - - - - -       X - - X - - X 
- - - X - - -       - X - - - X -       - - X - X - -       - X X X X X - 
- - - X - - -       - - X - X - -       - X - - - X -       - X X X X X - 
X X X R X X X   +   - - - B - - -   +   - - - K - - -   =   X X X S X X X 
- - - X - - -       - - X - X - -       - X - - - X -       - X X X X X - 
- - - X - - -       - X - - - X -       - - X - X - -       - X X X X X - 
- - - X - - -       X - - - - - X       - - - - - - -       X - - X - - X

 
Two super-queens threaten each other if:
  They are on the same row                        OR
  They are on the same column                     OR
  They are on the same diagonal                   OR
  They are a knight's move away from each other
 
Our game takes place on a chess board with dimensions NxN (boards above are
7x7).  As one can imagine, chess boards are square boards divided in a grid of
cells of equal size, N in each direction. This effectively produces NxN cells.
 
You have an NxN chess board (as defined above) and your task is to calculate
the number of possible configurations of putting N super-queens on the board,
so as no two of them are threatening each other. Return the calculated number.
 
DEFINITION
 
Class name:   SuperQueen
Method name:  getCount
Parameters:   int
Returns:      int
 
Method signature (make sure your method is public):
  int getCount (int N);
 
NOTES
Keep in mind that your solution must run in under 6 seconds on the TopCoder
testing machine.
 
TopCoder will ensure that:
* 0 < N < 16
 
 
EXAMPLES
 
N = 5   Result = 0
N = 10  Result = 4
N = 12  Result = 156

Definition

Class:
SuperQueen
Method:
getCount
Parameters:
int
Returns:
int
Method signature:
int getCount(int param0)
(be sure your method is public)

Constraints

    Examples

      No public sample cases were explicitly marked for this problem in the original data.

      Back to all problems