Altered Algorithm
This commit is contained in:
146
Algorithm/BackTracking/N-Queen.cpp
Normal file
146
Algorithm/BackTracking/N-Queen.cpp
Normal file
@@ -0,0 +1,146 @@
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
using namespace std;
|
||||
vector<vector<int>> result;
|
||||
|
||||
bool isValid(const vector<int>& path, int row, int col) {
|
||||
for (int i = 0; i < row; i++) {
|
||||
int prevCol = path[i];
|
||||
if (prevCol == col) return false; // ͬ<>г<EFBFBD>ͻ
|
||||
if (abs(row - i) == abs(col - prevCol)) return false; // <20>Խ<EFBFBD><D4BD>߳<EFBFBD>ͻ
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
//path[i] = j; (i, j)<29><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>
|
||||
void dfs(int _n, vector<int>& _path, int _i){
|
||||
if(_i == _n){
|
||||
result.push_back(_path);
|
||||
return;
|
||||
}
|
||||
for(int j = 0; j < _n; j++){
|
||||
//<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
if(isValid(_path, _i, j)){
|
||||
_path[_i] = j;
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>path
|
||||
dfs(_n, _path, _i + 1);
|
||||
//<2F>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>path
|
||||
_path[_i] = -1;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
int main(){
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD>ʺ<EFBFBD>λi<CEBB><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD>/<2F><><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>
|
||||
//ÿ<><C3BF><EFBFBD>ʺ<EFBFBD><CABA>ı<EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD>(i)<29><><EFBFBD><EFBFBD><EFBFBD>ɵ<EFBFBD><C9B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD>1 - N<>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еĻʺ<C4BB>
|
||||
int n;
|
||||
cin >> n;
|
||||
//vector<vector<int>> mat(n, vector<int>(n, 0));
|
||||
vector<int> path(n, -1);
|
||||
dfs(n, path, 0);
|
||||
for(auto x : result){
|
||||
for(auto y : x){
|
||||
cout << y << " ";
|
||||
}
|
||||
cout << endl;
|
||||
}
|
||||
cout << endl;
|
||||
return 0;
|
||||
}
|
||||
/*
|
||||
8
|
||||
0 4 7 5 2 6 1 3
|
||||
0 5 7 2 6 3 1 4
|
||||
0 6 3 5 7 1 4 2
|
||||
0 6 4 7 1 3 5 2
|
||||
1 3 5 7 2 0 6 4
|
||||
1 4 6 0 2 7 5 3
|
||||
1 4 6 3 0 7 5 2
|
||||
1 5 0 6 3 7 2 4
|
||||
1 5 7 2 0 3 6 4
|
||||
1 6 2 5 7 4 0 3
|
||||
1 6 4 7 0 3 5 2
|
||||
1 7 5 0 2 4 6 3
|
||||
2 0 6 4 7 1 3 5
|
||||
2 4 1 7 0 6 3 5
|
||||
2 4 1 7 5 3 6 0
|
||||
2 4 6 0 3 1 7 5
|
||||
2 4 7 3 0 6 1 5
|
||||
2 5 1 4 7 0 6 3
|
||||
2 5 1 6 0 3 7 4
|
||||
2 5 1 6 4 0 7 3
|
||||
2 5 3 0 7 4 6 1
|
||||
2 5 3 1 7 4 6 0
|
||||
2 5 7 0 3 6 4 1
|
||||
2 5 7 0 4 6 1 3
|
||||
2 5 7 1 3 0 6 4
|
||||
2 6 1 7 4 0 3 5
|
||||
2 6 1 7 5 3 0 4
|
||||
2 7 3 6 0 5 1 4
|
||||
3 0 4 7 1 6 2 5
|
||||
3 0 4 7 5 2 6 1
|
||||
3 1 4 7 5 0 2 6
|
||||
3 1 6 2 5 7 0 4
|
||||
3 1 6 2 5 7 4 0
|
||||
3 1 6 4 0 7 5 2
|
||||
3 1 7 4 6 0 2 5
|
||||
3 1 7 5 0 2 4 6
|
||||
3 5 0 4 1 7 2 6
|
||||
3 5 7 1 6 0 2 4
|
||||
3 5 7 2 0 6 4 1
|
||||
3 6 0 7 4 1 5 2
|
||||
3 6 2 7 1 4 0 5
|
||||
3 6 4 1 5 0 2 7
|
||||
3 6 4 2 0 5 7 1
|
||||
3 7 0 2 5 1 6 4
|
||||
3 7 0 4 6 1 5 2
|
||||
3 7 4 2 0 6 1 5
|
||||
4 0 3 5 7 1 6 2
|
||||
4 0 7 3 1 6 2 5
|
||||
4 0 7 5 2 6 1 3
|
||||
4 1 3 5 7 2 0 6
|
||||
4 1 3 6 2 7 5 0
|
||||
4 1 5 0 6 3 7 2
|
||||
4 1 7 0 3 6 2 5
|
||||
4 2 0 5 7 1 3 6
|
||||
4 2 0 6 1 7 5 3
|
||||
4 2 7 3 6 0 5 1
|
||||
4 6 0 2 7 5 3 1
|
||||
4 6 0 3 1 7 5 2
|
||||
4 6 1 3 7 0 2 5
|
||||
4 6 1 5 2 0 3 7
|
||||
4 6 1 5 2 0 7 3
|
||||
4 6 3 0 2 7 5 1
|
||||
4 7 3 0 2 5 1 6
|
||||
4 7 3 0 6 1 5 2
|
||||
5 0 4 1 7 2 6 3
|
||||
5 1 6 0 2 4 7 3
|
||||
5 1 6 0 3 7 4 2
|
||||
5 2 0 6 4 7 1 3
|
||||
5 2 0 7 3 1 6 4
|
||||
5 2 0 7 4 1 3 6
|
||||
5 2 4 6 0 3 1 7
|
||||
5 2 4 7 0 3 1 6
|
||||
5 2 6 1 3 7 0 4
|
||||
5 2 6 1 7 4 0 3
|
||||
5 2 6 3 0 7 1 4
|
||||
5 3 0 4 7 1 6 2
|
||||
5 3 1 7 4 6 0 2
|
||||
5 3 6 0 2 4 1 7
|
||||
5 3 6 0 7 1 4 2
|
||||
5 7 1 3 0 6 4 2
|
||||
6 0 2 7 5 3 1 4
|
||||
6 1 3 0 7 4 2 5
|
||||
6 1 5 2 0 3 7 4
|
||||
6 2 0 5 7 4 1 3
|
||||
6 2 7 1 4 0 5 3
|
||||
6 3 1 4 7 0 2 5
|
||||
6 3 1 7 5 0 2 4
|
||||
6 4 2 0 5 7 1 3
|
||||
7 1 3 0 6 4 2 5
|
||||
7 1 4 2 0 6 3 5
|
||||
7 2 0 5 1 4 6 3
|
||||
7 3 0 2 5 1 6 4
|
||||
*/
|
Reference in New Issue
Block a user