1128 N Queens Puzzle (20分)
The “eight queens puzzle” is the problem of placing eight chess queens on an 8×8 chessboard so that no two queens threaten each other. Thus, a solution requires that no two queens share the same row, column, or diagonal. The eight queens puzzle is an example of the more general N queens problem of placing N non-attacking queens on an N×N chessboard. (From Wikipedia - “Eight queens puzzle”.)
Here you are NOT asked to solve the puzzles. Instead, you are supposed to judge whether or not a given configuration of the chessboard is a solution. To simplify the representation of a chessboard, let us assume that no two queens will be placed in the same column. Then a configuration can be represented by a simple integer sequence (Q
1
,Q
2
,⋯,Q
N
), where Q
i
is the row number of the queen in the i-th column. For example, Figure 1 can be represented by (4, 6, 8, 2, 7, 1, 3, 5) and it is indeed a solution to the 8 queens puzzle; while Figure 2 can be represented by (4, 6, 7, 2, 8, 1, 9, 5, 3) and is NOT a 9 queens’ solution.
Figure 1 Figure 2
Input Specification:
Each input file contains several test cases. The first line gives an integer K (1<K≤200). Then K lines follow, each gives a configuration in the format "N Q
1
Q
2
… Q
N
", where 4≤N≤1000 and it is guaranteed that 1≤Q
i
≤N for all i=1,⋯,N. The numbers are separated by spaces.
Output Specification:
For each configuration, if it is a solution to the N queens problem, print YES in a line; or NO if not.
Sample Input:
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
Sample Output:
YES
NO
NO
YES
每次詢問,就定義一個陣列來存放棋子位置,寫一個judge函式,判斷是否在同一斜行。
兩層for迴圈遍歷,判斷當前點和後面的點是否在同一斜行且是否相等,如果在同一斜行or相等(同一行),就false
#include<iostream>
#include<vector>
#include<cmath>
using namespace std;
bool judge(int x1, int y1, int x2, int y2){
if(abs(x1 - x2) != abs(y1 - y2)){
return true;
}
return false;
}
int main(){
int n, k;
vector<int> v;
cin>>n;
for(int i = 0; i < n; i++){
cin>>k;
v.resize(k+2);
v.clear();
for(int j = 1; j <= k; j++){
cin>>v[j];
}
bool noFlag = true;
for(int j = 1; j <= k; j++){
for(int m = j +1; m <= k; m++){
if(judge(j,v[j],m,v[m]) == false || v[j] == v[m]){
noFlag = false;
break;
}
}
}
if(noFlag == false) cout<<"NO\n";
else cout<<"YES\n";
}
return 0;
}
相關文章
- Leetcode每日一題:52.N-Queens II(N皇后Ⅱ)LeetCode每日一題
- 7-22 n queens (10分) 八皇后(n皇后)問題
- CatGPT PuzzleGPT
- 草稿 9206 1128需處理
- [ARC177B] Puzzle of LampsLAMP
- 草稿 斷開式繫結combobox 1128
- 題解:CF634A Island Puzzle
- CF613E Puzzle Lover 題解
- CF1990D Grid Puzzle 題解
- 題解 CF613E Puzzle Lover
- solution-2022 CCPC Guilin J. Permutation PuzzleGUI
- 聊一聊Puzzle:從幻方到數獨
- 聊一聊Puzzle:創造了「數獨」的Nikoli(下)
- 輸入N,再輸入N個數,N
- Dynamics CRM實體系列之1:N、N:1以及N:N關係
- 【陣列】1128. 等價多米諾骨牌對的數量(簡單)陣列
- 11.2.0.3 :PRVG-11134 : Interface "n.n.n.n" on node "racnode1" is not able to..
- N皇后和N皇后2
- MySQL中資料型別(char(n)、varchar(n)、nchar(n)、nvarchar(n)的區別)MySql資料型別
- 訊號與槽N對N
- n*n的乘法口訣表
- [20210626]find -mtime +N N -N時間問題補充.txt
- [20210625]find -mtime +N N -N時間問題補充.txt
- 信奧賽一本通陳老師解題 1128:影像模糊處理
- [20210624]find -mtime +N N -N的時間範圍問題.txt
- 2022-07-17:1、2、3...n-1、n、n、n+1、n+2... 在這個序列中,只有一個數字有重複(n)。 這
- 關於宏定義 Bin(n),LongToBin(n),LongToBin(0x##n##L)
- 計算2的N次冪n 可輸入,n為自然數
- 求N!
- N 皇后
- n^k
- zcmu——1128: 第四章:誰先愛了,誰就輸了(細節題)
- n+p與n^6+p^6
- 方塊、拼圖、填色以及益智猜謎四類Brain & Puzzle遊戲解析AI遊戲
- FBL5N、FBL3N、 FBL1N ALV新增欄位顯示
- ASE160N08-ASEMI低壓N溝道MOS管ASE160N08
- ASE180N08-ASEMI低壓N溝道MOS管ASE180N08
- 9.18n