/*
* file: queen.c
* description: 求 n 皇后問題回溯演算法
*/#include
#define delaytime 20000 /* 顯示棋局時間 */
#define topx 10 /* 棋盤左上角 x 座標 */
#define topy 5 /* 棋盤左上角 y 座標 */
int n; /* 皇后數量 */
int a[8], b[15], c[15];
/** a[col-1] 記錄第 col 列有無皇后, 1 表示有。
* b[row+col-2] 記錄從左上數第 row+col-1 條斜率為 1 的線上有無皇后。
* c[row-col+7] 記錄從右上數第 row-col+8 條斜率為 -1 的線上有無皇后。
*/int num = 0;
int row;
void backtrack (int row)
else
a[col-1] = 0; /* 清空資料 */
b[row+col-2] = 0;
c[row-col+n-1] = 0;
gotoxy(col*2 + topx, row + topy); /* 清除圖象 */
putch('.');
}/* end if */
}/* end for */
}/* end function backtrack */
void main()
clrscr();
for(i=1; i<=n; i++) /* 畫棋盤(chessboard) */
}backtrack(1); /* 開始回溯演算法 */
gotoxy(12, 17); /* 顯示最後結果 */
printf ("there are %d kinds of solution./n", num);
getch();
}
回溯 皇后 演算法筆記 回溯演算法 N皇后問題
n 皇后問題研究的是如何將 n 個皇后放置在 n n 的棋盤上,並且使皇后彼此之間不能相互攻擊。上圖為 8 皇后問題的一種解法。給定乙個整數 n,返回所有不同的 n 皇后問題的解決方案。每一種解法包含乙個明確的 n 皇后問題的棋子放置方案,該方案中 q 和 分別代表了皇后和空位。示例 輸入 4 輸出...
回溯法求N皇后問題
回溯法 是一種選優搜尋法,回溯法從開始節點 根節點 出發,以深度優先方式搜尋整個解空間。但當探索到某一步時,發現原先選擇並不優或達不到目標,就退回一步重新選擇,這種走不通就退回再走的技術為回溯法,而滿足回溯條件的某個 狀態的點稱為 回溯點 n皇后問題描述 在n乘n格的棋盤上放置彼此不受攻擊的n個皇后...
回溯演算法n皇后問題
這是一道考查應聘者綜合能力的問題,其中包含了演算法的設計 ui的設計 介面的設計等問題,當然在具體面試中沒有時間讓應聘者完成整個設計和編碼,但是面試官往往通過了解應聘者的設計思路和工作步驟來考查應聘者的能力。本節將具體分析這道程式設計題。所涉及到的知識點 回溯演算法 net桌面應用程式的ui設計 分...