資料結構 線性表 遞迴實現八皇后問題

2021-08-20 12:22:53 字數 1009 閱讀 4890

八皇后問題,是乙個古老而著名的問題,是回溯演算法的典型案例。該問題是國際西洋棋棋手馬克斯·貝瑟爾於2023年提出:在8×8格的西洋棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行、同一列或同一斜線上,問有多少種擺法。 高斯認為有76種方案。2023年在柏林的象棋雜誌上不同的作者發表了40種不同的解,後來有人用圖論的方法解出92種結果。

這裡用遞迴實現:

#includeint count = 0;

int notdanger(int row,int j,int (*chess)[8])

} //判斷左上方

for(i=row,k=j;i>=0&&k>=0;i--,k--) }

//判斷右下方

for(i=row,k=j;i<8&&k<8;i++,k++) }

//判斷右上方

for(i=row,k=j;i>=0&&k<8;i--,k++) }

//判斷左下方

for(i=row,k=j;i<8&&k>=0;i++,k--) }

if(flag1||flag2||flag3||flag4||flag5)

else }

//row 表示起始行

//n表示列數

//(*chess)[8] 表示指向棋盤的每一行的指標

void eightqueen(int row,int n,int (*chess)[8])

} if(row== 8)

printf("\n");

} printf("\n\n");

count++;

} else

*(*(chess2+row)+j) =1;

eightqueen(row+1,n,chess2);

}} }

}int main()

; eightqueen(0,8,chess);

printf("總共有:%d種\n",count);

return 0;

}

資料結構 線性表 陣列實現

按照上述抽象描述,定義乙個模板類來描述上述的抽象描述。templateclass linearlist bool isempty const 判斷線性表是否為空 int length const 線性表長度 bool find int k,t x const 返回第k個元素到x中 int searc...

資料結構棧 線性表實現

棧的定義 棧是一種特殊的表這種表只在表頭進行插入和刪除操作。因此,表頭對於棧來說具有特殊的意義,稱為棧頂。相應地,表尾稱為棧底。不含任何元素的棧稱為空棧。而本次給大家介紹用線性表實現的棧。如圖 這裡介紹雙向鍊錶的常用操作 l 建立棧 l 銷毀棧 l 清空棧 l 壓棧 l 出棧 l 返回棧頂元素 l ...

基礎資料結構 線性表實現

以下 是對基礎資料結構中的線性表的順序實現,在vs2012下沒問題 include define maxlength 20 struct list 增加元素 int insert list l,int e,int index l.data index e l.length return 1 刪除元素...