1128 N Queens Puzzle (20 分)【难度: 一般 / 知识点: 模拟】

在这里插入图片描述
https://pintia.cn/problem-sets/994805342720868352/problems/994805348915855360

  • 每一个点只会出现一次
  • 任意俩点的横距离和总距离的差不会相等
#include<bits/stdc++.h>
using namespace std;
const int N=10010;
int a[N],n,t;
bool check()
{
    
    
    int cnt[N]={
    
    0};
    for(int i=1;i<=n;i++)
    {
    
        
        if(cnt[a[i]]) return false;
        for(int j=i+1;j<=n;j++)
            if(abs(i-j)==abs(a[i]-a[j])) return false;
        cnt[a[i]]++;
    }
    return true;
}
int main(void)
{
    
    
    scanf("%d",&t);
    while(t--)
    {
    
    
        scanf("%d",&n);
        for(int i=1;i<=n;i++) scanf("%d",&a[i]);
        if(check()) puts("YES");
        else puts("NO");
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_46527915/article/details/121524852