当前位置:网站首页>acwing 843. N-queen problem
acwing 843. N-queen problem
2022-07-07 04:38:00 【_ Liu Xiaoyu】
n− The Queen's problem means that n Put a queen in n×n On my chess board , So that the queen can't attack each other , That is, no two Queens can be in the same line 、 On the same column or slash .
Now, given an integer n, Please output all the pieces that meet the conditions .
Input format
All in one line , Contains integers n.
Output format
Each solution accounts for n That's ok , Each line outputs a length of n String , Used to represent the complete chessboard state .
among . Indicates that the grid status of a position is empty ,Q The queen is placed on the square indicating a certain position .
After the output of each scheme is completed , Output a blank line .
Be careful : There must be no extra spaces at the end of the line .
The order of output schemes is arbitrary , As long as there is no repetition and no omission .
Data range
1≤n≤9
sample input :
4
sample output :
.Q…
…Q
Q…
…Q.
…Q.
Q…
…Q
.Q…
This question is also DFS, It can be arranged according to
solution 1: Enumerate by row ( It's also the same question Full Permutation Allied )
It can be remembered as a template
#include <iostream>
using namespace std;
const int N = 20;
// bool Array is used to determine whether the next location of the search is feasible
// col Column ,dg Diagonals ,udg Anti diagonal
// g[N][N] Used to save path
int n;
char g[N][N];
bool col[N], dg[N], udg[N];
void dfs(int u) {
// u == n It means that we have searched n That's ok , So output this path
if (u == n) {
for (int i = 0; i < n; i ++ ) puts(g[i]); // Equivalent to cout << g[i] << endl;
puts(""); // Line break
return;
}
// enumeration u This business , Search for legal Columns , // Here, we can regard line as y, Column as x
// Here is the enumeration number u That's ok , The first i Column , Whether to release the queen , u= y, i = x after ===》 The diagonal is u + i、u - i + n
for (int i = 0; i < n; i ++ )
// prune ( For points that do not meet the requirements , No more searching )
if (!col[i] && !dg[u + i] && !udg[n - i + u])
{
g[u][i] = 'Q';
col[i] = dg[u + i] = udg[n - i + u] = true;
dfs(u + 1);
col[i] = dg[u + i] = udg[n - i + u] = false;
g[u][i] = '.'; // Restore the scene
}
}
int main() {
cin >> n;
for (int i = 0; i < n; i ++ )
for (int j = 0; j < n; j ++ )
g[i][j] = '.';
dfs(0);
return 0;
}
Method 2: Enumerate according to each element
Every position has 2 In this case , Put it or not , There is... In all n2
Time complexity : O(2 Of n2 Power ), I can't fight it out , Forgive me
Schematic diagram : Draw like this
Ideas : Search step by step according to each position .
code:
// Different search order Time complexity is different So the search order is very important !
#include <iostream>
using namespace std;
const int N = 20;
int n;
char g[N][N];
bool row[N], col[N], dg[N], udg[N]; // Because it's a search , So I added row
// s Indicates the number of queens that have been put on
void dfs(int x, int y, int s)
{
// Deal with situations beyond the boundary , Whether to put this directly in one line or not , After walking , Jump to the next line to start
if (y == n) y = 0, x ++ ;
if (x == n) {
// x==n Description has been enumerated n^2 It's a place
if (s == n) {
// s==n It means that it was successfully put on n A queen
for (int i = 0; i < n; i ++ ) puts(g[i]);
puts("");
}
return;
}
// Branch 1: Put the queen
if (!row[x] && !col[y] && !dg[x + y] && !udg[x - y + n]) {
g[x][y] = 'Q';
row[x] = col[y] = dg[x + y] = udg[x - y + n] = true;
dfs(x, y + 1, s + 1);
row[x] = col[y] = dg[x + y] = udg[x - y + n] = false;
g[x][y] = '.';
}
// Branch 2: Don't let the queen go
dfs(x, y + 1, s);
}
int main() {
cin >> n;
for (int i = 0; i < n; i ++ )
for (int j = 0; j < n; j ++ )
g[i][j] = '.';
dfs(0, 0, 0);
return 0;
}
边栏推荐
- [coded font series] opendyslexic font
- kivy教程之设置窗体大小和背景(教程含源码)
- C # use Siemens S7 protocol to read and write PLC DB block
- AI landing new question type RPA + AI =?
- [knife-4j quickly build swagger]
- 微信能开小号了,拼多多“砍一刀”被判侵权,字节VR设备出货量全球第二,今日更多大新闻在此
- Win11远程桌面连接怎么打开?Win11远程桌面连接的五种方法
- 组织实战攻防演练的5个阶段
- 未婚夫捐5亿美元给女PI,让她不用申请项目,招150位科学家,安心做科研!
- What if the win11 screenshot key cannot be used? Solution to the failure of win11 screenshot key
猜你喜欢
[team learning] [34 sessions] Alibaba cloud Tianchi online programming training camp
What if the win11 screenshot key cannot be used? Solution to the failure of win11 screenshot key
计数排序基础思路
A detailed explanation of head pose estimation [collect good articles]
The request request is encapsulated in uni app, which is easy to understand
1.19.11. SQL client, start SQL client, execute SQL query, environment configuration file, restart policy, user-defined functions, constructor parameters
This "advanced" technology design 15 years ago makes CPU shine in AI reasoning
Oracle -- 视图与序列
[written to the person who first published the paper] common problems in writing comprehensive scientific and Technological Papers
视频融合云平台EasyCVR视频广场左侧栏列表样式优化
随机推荐
计数排序基础思路
True global ventures' newly established $146million follow-up fund was closed, of which the general partner subscribed $62million to invest in Web3 winners in the later stage
Fix the problem that the highlight effect of the main menu disappears when the easycvr Video Square is clicked and played
Optimization of channel status offline of other server devices caused by easycvr cluster restart
AI landing new question type RPA + AI =?
Up to 5million per person per year! Choose people instead of projects, focus on basic scientific research, and scientists dominate the "new cornerstone" funded by Tencent to start the application
Is there any way to bookmark the code in the visual studio project- Is there a way to bookmark code in a Visual Studio project?
ESG全球领导者峰会|英特尔王锐:以科技之力应对全球气候挑战
NTU notes 6422quiz review (1-3 sections)
Intel David tuhy: the reason for the success of Intel aoten Technology
食堂用户菜品关系系统(C语言课设)
[system management] clear the icon cache of deleted programs in the taskbar
Have you got the same "artifact" of cross architecture development praised by various industry leaders?
Unity3d can change colors and display samples in a building GL material
A series of shortcut keys for jetbrain pychar
[written to the person who first published the paper] common problems in writing comprehensive scientific and Technological Papers
Fiance donated 500million dollars to female PI, so that she didn't need to apply for projects, recruited 150 scientists, and did scientific research at ease!
Win11 control panel shortcut key win11 multiple methods to open the control panel
acwing 843. n-皇后问题
Why does WordPress open so slowly?