八皇后問題C語言解法(遞迴 回溯)

2021-10-07 02:44:34 字數 623 閱讀 1659

本演算法是經過學習b站up主講解後,整理出來的**,編譯無誤,可生成92種方式。 

#include "stdafx.h"

#include"stdlib.h"

int place[8] = ;//用來記錄當前行的皇后在第幾列

bool flag[8] = ;//那一列有皇后占領

bool d1[15] = ;//上對角線是否占領

bool d2[15] = ;//下對角線是否占領

int number = 0;//技術總共有多少解法

void print(int n)

; for(i=0;i<8;i++)

table[i][place[i]]=1;

printf_s("\n第 %d 種\n",n);

for(i=0;i<8;i++)

for(j=0;j<8;j++) }

void generate(int n)

//所有的檢查完,再繼續回溯,確保得出所有解

flag[col] = 1;

d1[n - col + 7] = 1;

d2[n + col] = 1;

} }}int main()

八皇后問題(遞迴,回溯)

八皇后問題是乙個以西洋棋為背景的問題 如何能夠在 8 8 的西洋棋棋盤上放置八個皇后,使得任何乙個皇后都無法直接吃掉其他的皇后?為了達到此目的,任兩個皇后都不能處於同一條橫行 縱行或斜線上。八皇后問題可以推廣為更一般的n皇后擺放問題 這時棋盤的大小變為n n,而皇后個數也變成n。當且僅當 n 1 或...

遞迴 回溯 八皇后問題

八皇后 問題,是乙個古老而著名的問題,是回溯演算法 的典型案例。該問題是國際西洋棋棋手馬克斯 貝瑟爾於1848年提出 在8 8格的西洋棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行 同一列或同一斜線上,問有多少種擺法.輸入 無 輸出 8行8列的矩陣,0代表此處無皇后,1表示此處有...

遞迴回溯 八皇后問題

八皇后問題 西洋棋中皇后能橫向,縱向和斜向移動,在這三條線上的其他棋子都可以被吃掉。所謂八皇后問題就是 將八位皇后放在一張8x8的棋盤上,使得每位皇后都無法吃掉別的皇后,即任意兩個皇后都不在同一條橫線,豎線和斜線上 問一共有多少種擺法?解決思路 1.將第一行第一列放入 2.在第二行適合的位置 不在上...