PAT A1128 N Queens Puzzle [模拟]

题目描述

链接
题目上只保证了不在同一列,要判断是否在同一行,以及是否在同一列

分析

  • 循环是0~n-1, 0~n-1
  • 不满足的条件是v[j] == v[t] || abs(v[j]-v[t]) == abs(j-t)

代码

#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
int main() {
    int k, n;
    cin >> k;
    for (int i = 0; i < k; i++) {
        cin >> n;
        vector<int> v(n);
        bool result = true;
        for (int j = 0; j < n; j++) {
            cin >> v[j];
            for (int t = 0; t < j; t++) {
                if (v[j] == v[t] || abs(v[j]-v[t]) == abs(j-t)) {
                    result = false;
                    break;
                }
            }
        }
        cout << (result == true ? "YES\n" : "NO\n");
    }
    return 0;
}
posted @ 2019-09-03 19:01  Doragd  阅读(100)  评论(0编辑  收藏  举报