1128. N Queens Puzzle 解析

阅读: 评论:0

1128. N Queens Puzzle 解析

1128. N Queens Puzzle 解析

这个棋盘的下标也是有点厉害,从左下角开始的。想了半天。

行和斜向的都不能在一条直线,分别计算出下标,然后看又没有在一条直线上的。

a[i-1][j-1]  a[i-1][j]  a[i-1][j+1]

a[i][j-1]      a[i][j]      a[i][j+1]

a[i+1][j-1]  a[i+1][j]  a[i+1][j+1]

看清楚行列。应该没什么问题了。


#include <iostream>
#include <algorithm>
#include <vector>
#include <cstring>using namespace std;
vector <int> queens;
int k, n;bool map[1005][1005];
bool horizon[1005];bool CheckMap(int h ,int v) {//h = row ; v = columnif (horizon[h]) {return false;}else {horizon[h] = true;}if (map[h][v])return false;else {for (int row = h,column = v; row >= 0 && column >= 0 && row <= n && column <= n;row++,column++) {//row行 column列if (map[row][column])return false;}for (int row = h, column = v; row >= 0 && column >= 0 && row <= n && column <= n; row++, column--) {//row行 column列if (map[row][column])return false;}for (int row = h, column = v; row >= 0 && column >= 0 && row <= n && column <= n; row--, column++) {//row行 column列if (map[row][column])return false;}for (int row = h, column = v; row >= 0 && column >= 0 && row <= n && column <= n; row--, column--) {//row行 column列if (map[row][column])return false;}map[h][v] = true;}return true;}int main() {cin >> k;for (int i = 1; i <= k; i++) {cin >> n;int qn;bool tag = true;memset(map, false, sizeof(map));memset(horizon, false, sizeof(horizon));for (int j = 1; j <= n; j++) {cin >> qn;if (tag)tag = CheckMap(qn, j);//先行 后列			}if (tag)cout << "YES" << endl;else cout << "NO" << endl;}return 0;
}


本文发布于:2024-01-28 09:19:27,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17064047736392.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:Queens   Puzzle
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23