La manera más bruta de determinar si la reina está amenazada consiste en recorrer las diagonales filas y columas que contienen a la reina, y ver si hay alguna casilla ocupada por otra reina, ya que las reinas atacan todas de igual modo, a través de diagonales, filas y columnas.
Sin embargo, a fin de lograr que el algoritmo sea eficiente, cada vez que se introduce una nueva reina al tablero, hay que rellenar la matriz con información, recorriendo todas las casillas de digagonales, fila y columna que pasan por la reina, y "marcar" con un valor que indique "CASILLA ATACADA".
Cuando una nueva reina debe colocarse en el tablero, simplemente se revisa si la casilla en la que se desea colocarla está atacada, o aún no, lo cual es una sencilla verificación del valor que la matriz tiene sólo en esa posición.
______________
Si lo que nos dan de entrada es un tablero ocupado por reinas, se busca dichas reinas una por una, y se van marcando las casillas que ataca cada una, etc.
______________-
Una técnica que puede ayudar a la eficiencia del algoritmo sería guardar un registro aparte con información concreta sobre las filas, columnas y diagonales.
Entonces bastaría con saber la posición de cada reina y marcar una fila entera como "ATACADA", y así con lo demás. Esto ahorraría mucho tiempo de ejecución.