演算法學習回顧-皇后問題
0.皇后問題介紹
在一個k*k方格上放置皇后,並按照國際象棋規則使得各個皇后無法吃對方,這個問題是回溯法的經典運用。對應皇后每次放置皇后使得格局變動一次,對於斜方向採用反向距離等比|x-i|=|y-j|計算,每次遍歷棋盤放置一個位置標記,最後可給出最終的解。
1.程式碼執行
#include"Include.h"
#define N 6
int sol = 0;
struct Queen
{
int x;
int y;
};
int B[N][N];
Queen queen[N];
void Reset(int r, int x, int y, int n)
{
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
{
if (fabs(i - x) == fabs(j - y) || i==x || j==y)
{
B[i][j] = B[i][j]+ r;
}
}
}
}
//設定Disp塊檢查錯誤
void Disp()
{
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
{
printf("%d ", B[i][j]);
}
printf("\n");
}
}
void Search()
{
int i=0,j=0,r=0,c = -1;
while (c >= -1)
{
while (j < N)
{
if (B[i][j] == 0)
{
c = c + 1;
queen[c].x = i;
queen[c].y = j;
if (c == N - 1)
{
printf("sucesss\n");
Disp();
sol++;
}
Reset(1, i, j, N);
r = 1;
break;
}
j = j + 1;
if (j == N)
{
r = 0;
}
}
if (r == 0)
{
i = queen[c].x;
j = queen[c].y+1;
queen[c].x = -1;
queen[c].y = -1;
Reset(-1, i, j-1, N);
c = c - 1;
}
else
{
i = i + 1;
j = 0;
}
}
}
int main()
{
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
{
B[i][j] = 0;
}
}
Search();
printf("%d", sol);
}
2.結果
PS:對於6皇后可以解決,結果8皇后就跑不出來,希望大家來找茬!
相關文章
- 從八皇后問題到回溯演算法演算法
- N皇后問題
- jeesite學習(二)----回顧SpringMVCSpringMVC
- JavaScript 回顧學習:變數JavaScript變數
- redis - 學習筆記回顧Redis筆記
- leetcode演算法題解(Java版)-9-N皇后問題LeetCode演算法Java
- JavaScript回顧學習:目錄篇JavaScript
- 洛谷八皇后問題
- 八皇后問題python解法Python
- 回顧·機器學習/深度學習工程實戰機器學習深度學習
- HDU - 2553 N皇后問題(DFS)
- java學習回顧---生產者與消費者問題以及多執行緒補充Java執行緒
- 7-22 n queens (10分) 八皇后(n皇后)問題
- 貪婪演算法回顧演算法
- 資料結構和演算法——遞迴-八皇后問題(回溯演算法)資料結構演算法遞迴
- 機器學習2020年回顧 - Kristóf機器學習
- MySQL學習總結:提問式回顧 undo log 相關知識MySql
- 前端面試題 回顧與複習(更新中)前端面試題
- 2020-11-18 N皇后問題
- 八皇后問題分析和實現
- N皇后問題(各種優化)優化
- 經典排序演算法回顧:排序演算法
- ScienceAI 2021「AI+化學」專題年度回顧AI
- 第3講回顧:聯邦學習FATE演算法模組梳理及建模演示聯邦學習演算法
- 機器學習回顧篇(3):線性迴歸機器學習
- Book of the Dead 死者之書Demo工程回顧與學習
- java學習回顧---懶漢式和餓漢式Java
- <react學習筆記(5)>知識點回顧(1)React筆記
- 八皇后||演算法演算法
- 大學兩年,回顧我的學習心裡歷程
- numpy學習回顧-數學函式及邏輯函式函式
- 【演算法學習筆記】生成樹問題探究演算法筆記
- 回溯演算法 | 追憶那些年曾難倒我們的八皇后問題演算法
- 機器學習回顧篇(2):最小二乘法機器學習
- java學習回顧---執行緒和同步程式碼塊Java執行緒
- 演算法:N皇后二演算法
- 錯題知識點回顧1
- C#資料結構與演算法系列(十四):遞迴——八皇后問題(回溯演算法)C#資料結構演算法遞迴