【演算法】8皇后問題
參考:
http://www.cnblogs.com/jillzhang/archive/2007/10/21/922830.html
現在有個疑惑,用這種方法如何列印出所有的可能情況?
#include<stdio.h>
#define Bool int
#define True 1
#define False 0
Bool IsSafe(int col,int row,int queenList[])
{
int tempCol;
int tempRow;
//只檢查前面的列
for (tempCol = 0; tempCol < col; tempCol++)
{
tempRow = queenList[tempCol];
if (tempRow == row)
{
//同一行
return False;
}
if (tempCol == col)
{
//同一列
return False;
}
if (tempRow - tempCol == row - col || tempRow + tempCol == row + col)
{
return False;
}
}
return True;
}
Bool PlaceQueue(int queenList[], int col)
{
int row = 0;
Bool foundSafePos = False;
if (col == 8) //結束標誌
{
//當處理完第8列的完成
foundSafePos = True;
}
else
{
while (row < 8 && !foundSafePos)
{
if (IsSafe(col, row, queenList))
{
//找到安全位置
queenList[col] = row;
//找下一列的安全位置
foundSafePos = PlaceQueue(queenList, col + 1);
if (!foundSafePos)
{
row++;
}
}
else
{
row++;
}
}
}
return foundSafePos;
}
int main()
{
int i;
int queenList[8];
int j;
for(j=0; j<8 ;j++)
{
queenList[0]=j;
PlaceQueue(queenList,1);
for(i=0; i<8;i++)
printf("%d ",queenList[i]);
printf("\n");
}
}
相關文章
- 從八皇后問題到回溯演算法演算法
- 演算法學習回顧-皇后問題演算法
- N皇后問題
- 國際象棋“皇后”問題的回溯演算法演算法
- 洛谷八皇后問題
- 轉:八皇后問題 java實現,演算法兩則Java演算法
- 使用回溯演算法解決N皇后問題以及間隔排列問題演算法
- leetcode演算法題解(Java版)-9-N皇后問題LeetCode演算法Java
- 八皇后問題python解法Python
- 八皇后問題自我總結
- 資料結構和演算法——遞迴-八皇后問題(回溯演算法)資料結構演算法遞迴
- 八皇后問題分析和實現
- N皇后問題(各種優化)優化
- 八皇后||演算法演算法
- 演算法:N皇后二演算法
- js解八皇后問題程式碼例項JS
- 回溯演算法 | 追憶那些年曾難倒我們的八皇后問題演算法
- C#資料結構與演算法系列(十四):遞迴——八皇后問題(回溯演算法)C#資料結構演算法遞迴
- 八皇后問題的錯誤程式碼示範
- 回溯法(排列樹)解決八(N)皇后問題
- 經典n皇后問題java程式碼實現Java
- [Java] 藍橋杯ADV-203 演算法提高 8皇后·改Java演算法
- 用棧+回溯+非遞迴解決N皇后問題遞迴
- js使用遞迴回溯法解八皇后問題程式碼分享JS遞迴
- 每天刷個演算法題20160519:回溯法解八皇后演算法
- 原:八皇后問題的遞迴和非遞迴Java實現遞迴Java
- P10871 皇后 Kraljice 題解
- 每日一題之拉低通過率 回溯演算法 leetcode 51 N皇后每日一題演算法LeetCode
- 《演算法》系列—大白話聊分治、回溯,手撕八皇后演算法
- 【演算法題】任務分配問題---匈牙利演算法演算法
- 三個水桶等分8升水的問題 -《演算法的樂趣》演算法
- 演算法問題基於蟻群演算法求解求解TSP問題(JAVA)演算法Java
- RapidWeaver 8常見問題API
- 8 大前端安全問題(上)前端
- 8 大前端安全問題(下)前端
- IE8快取問題快取
- Oracle初學者問題8(轉)Oracle
- A+B 演算法問題演算法