Rompecabezas de PTA N Queens (20 分)

Es la mente humana la que libera la luz infinita, y también es la mente humana la que crea la oscuridad ilimitada. La luz y la oscuridad se entrelazan y luchan juntas. Este es el mundo por el que estamos nostálgicos y desamparados.

El "rompecabezas de las ocho reinas" es el problema de colocar ocho reinas de ajedrez en un tablero de ajedrez de 8 × 8 para que no haya dos reinas que se amenacen entre sí. Por lo tanto, una solución requiere que no haya dos reinas que compartan la misma fila, columna o diagonal. El rompecabezas de las ocho reinas es un ejemplo del problema más general de las N reinas de colocar N reinas no atacantes en un tablero de ajedrez de N × N. (De Wikipedia - "Rompecabezas de las ocho reinas").

Aquí NO se le pide que resuelva los acertijos. En cambio, se supone que debe juzgar si una configuración determinada del tablero de ajedrez es una solución o no. Para simplificar la representación de un tablero de ajedrez, supongamos que no se colocarán dos reinas en la misma columna. Entonces, una configuración se puede representar mediante una secuencia de enteros simple (Q 1, Q 2, ⋯, Q N), donde Q i es el número de fila de la reina en el i- a columna. Por ejemplo, la Figura 1 se puede representar mediante (4, 6, 8, 2, 7, 1, 3, 5) y de hecho es una solución al rompecabezas de las 8 reinas; mientras que la Figura 2 puede ser representada por (4, 6, 7, 2, 8, 1, 9, 5, 3) y NO es una solución de 9 reinas.

8q.jpg   9q.jpg
Figura 1   Figura 2

Especificación de entrada:

Cada archivo de entrada contiene varios casos de prueba. La primera línea da un número entero K (1 <K≤200). Luego siguen K líneas, cada una da una configuración en el formato "NQ 1 Q 2 ... Q N", donde 4≤N≤1000 y se garantiza que 1≤Q i ≤N para todo i = 1, ⋯, N. Los números están separados por espacios.

Especificación de salida:

Para cada configuración, si es una solución al problema de N reinas, imprima  YES en una línea; NO si no.

Entrada de muestra:

4
8 4 6 8 2 7 1 3 5
9 4 6 7 2 8 1 9 5 3
6 1 5 2 6 4 3
5 1 3 5 2 4

Salida de muestra:

YES
NO
NO
YES
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <vector>
#include <ctime>
#include <cctype>
#include <bitset>
#include <utility>
#include <sstream>
#include <complex>
#include <iomanip>
#include<climits>//INT_MAX

//#include<bits/stdc++.h>
#define PP pair<ll,int>
#define inf 0x3f3f3f3f
#define llinf 0x3f3f3f3f3f3f3f3fll
#define dinf 1000000000000.0
#define PI 3.1415926
typedef long long ll;
using namespace std;
int const mod=1e9+7;
const int maxn=1010;
int s[maxn];
int i,j,k,K,N;
int main()
{
    scanf("%d",&K);
    while(K--){
        scanf("%d",&N);
        bool fg=0;
        for(i=1;i<=N;++i)
                scanf("%d",&s[i]);
        for(i=1;i<=N;++i){
            for(j=1;j<=N;++j){
                if(i!=j){
                    if(s[i]==s[j]||(abs(s[i]-s[j])==abs(i-j))){
                        fg=1;
                        break;
                    }
                }
            }
            if(fg)
                break;
        }
        if(fg)
            printf("NO\n");
        else
            printf("YES\n");
    }
    return 0;
}

 

Supongo que te gusta

Origin blog.csdn.net/weixin_44170305/article/details/108481325
Recomendado
Clasificación