 GFG App
Open App Browser
Continue

# Check if a Queen can attack a given cell on chessboard

Given the position of the queen (qX, qY) and the opponent (oX, oY) on a chessboard. The task is to determine whether the queen can attack the opponent or not. Note that the queen can attack in the same row, same column and diagonally.
Example:

Input: qX = 4, qY = 5, oX = 6, oY = 7
Output: Yes
The queen can attack diagonally.

Input: qX = 1, qY = 1, oX = 3, oY = 2
Output: No

Approach:

• If qR = oR, it means that both the queen and the opponent are in the same row and the queen can attack the opponent.
• Similarly, if qC = oC then also the queen can attack the opponent as they both are in the same column.
• And for diagonals, if abs(qR – oR) = abs(qC – oC) i.e. queen can attack the opponent diagonally.

If all of the above conditions fail then the opponent is safe from the queen.

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach` `#include ` `using` `namespace` `std;`   `// Function that returns true if the queen` `// can attack the opponent` `bool` `canQueenAttack(``int` `qR, ``int` `qC, ``int` `oR, ``int` `oC)` `{` `    ``// If queen and the opponent are in the same row` `    ``if` `(qR == oR)` `        ``return` `true``;`   `    ``// If queen and the opponent are in the same column` `    ``if` `(qC == oC)` `        ``return` `true``;`   `    ``// If queen can attack diagonally` `    ``if` `(``abs``(qR - oR) == ``abs``(qC - oC))` `        ``return` `true``;`   `    ``// Opponent is safe` `    ``return` `false``;` `}`   `// Driver code` `int` `main()` `{` `    ``int` `qR = 1, qC = 1;` `    ``int` `oR = 3, oC = 2;` `    ``if` `(canQueenAttack(qR, qC, oR, oC))` `        ``cout << ``"Yes"``;` `    ``else` `        ``cout << ``"No"``;`   `    ``return` `0;` `}`

## Java

 `// Java implementation of the approach` `class` `GFG` `{` `    `  `// Function that returns true if the queen` `// can attack the opponent` `static` `boolean` `canQueenAttack(``int` `qR, ``int` `qC,` `                                ``int` `oR, ``int` `oC)` `{` `    ``// If queen and the opponent` `    ``// are in the same row` `    ``if` `(qR == oR)` `        ``return` `true``;`   `    ``// If queen and the opponent ` `    ``// are in the same column` `    ``if` `(qC == oC)` `        ``return` `true``;`   `    ``// If queen can attack diagonally` `    ``if` `(Math.abs(qR - oR) == Math.abs(qC - oC))` `        ``return` `true``;`   `    ``// Opponent is safe` `    ``return` `false``;` `}`   `// Driver code` `public` `static` `void` `main(String[] args)` `{` `    ``int` `qR = ``1``, qC = ``1``;` `    ``int` `oR = ``3``, oC = ``2``;` `    ``if` `(canQueenAttack(qR, qC, oR, oC))` `        ``System.out.println(``"Yes"``);` `    ``else` `        ``System.out.println(``"No"``);` `}` `}`   `// This code is Contributed by Code_Mech.`

## Python3

 `# Python3 implementation of the approach `   `# Function that returns True if the ` `# queen can attack the opponent ` `def` `canQueenAttack(qR, qC, oR, oC): `   `    ``# If queen and the opponent are` `    ``# in the same row ` `    ``if` `qR ``=``=` `oR:` `        ``return` `True`   `    ``# If queen and the opponent are ` `    ``# in the same column ` `    ``if` `qC ``=``=` `oC:` `        ``return` `True`   `    ``# If queen can attack diagonally ` `    ``if` `abs``(qR ``-` `oR) ``=``=` `abs``(qC ``-` `oC): ` `        ``return` `True`   `    ``# Opponent is safe ` `    ``return` `False`   `# Driver code ` `if` `__name__ ``=``=` `"__main__"``: `   `    ``qR, qC ``=` `1``, ``1` `    ``oR, oC ``=` `3``, ``2` `    ``if` `canQueenAttack(qR, qC, oR, oC): ` `        ``print``(``"Yes"``)` `    ``else``:` `        ``print``(``"No"``) ` `    `  `# This code is contributed ` `# by Rituraj Jain`

## C#

 `// C# implementation of the approach` `using` `System;` `class` `GFG` `{` `    `  `// Function that returns true if the queen` `// can attack the opponent` `static` `bool` `canQueenAttack(``int` `qR, ``int` `qC,` `                                ``int` `oR, ``int` `oC)` `{` `    ``// If queen and the opponent` `    ``// are in the same row` `    ``if` `(qR == oR)` `        ``return` `true``;`   `    ``// If queen and the opponent ` `    ``// are in the same column` `    ``if` `(qC == oC)` `        ``return` `true``;`   `    ``// If queen can attack diagonally` `    ``if` `(Math.Abs(qR - oR) == Math.Abs(qC - oC))` `        ``return` `true``;`   `    ``// Opponent is safe` `    ``return` `false``;` `}`   `// Driver code` `public` `static` `void` `Main()` `{` `    ``int` `qR = 1, qC = 1;` `    ``int` `oR = 3, oC = 2;` `    ``if` `(canQueenAttack(qR, qC, oR, oC))` `        ``Console.WriteLine(``"Yes"``);` `    ``else` `        ``Console.WriteLine(``"No"``);` `}` `}`   `// This code is Contributed by Code_Mech.`

## PHP

 ``

## Javascript

 ``

Output:

`No`

Time complexity: O(1)
Auxiliary space: O(1)

My Personal Notes arrow_drop_up