注:本帖主要进行个人记录以及思考
1.八后问题:
百科介绍:八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。
Problem Formulation :
initial state:没有棋子在棋盘上
goal state:八个皇后都在棋盘上,任意两个皇后都不能处于同一行、同一列或同一斜线上
Actions:这里开始的情况有两种,一种是将queen放到棋盘左上角,这样它不会受到任何queen的攻击;另一种是随机进行摆放。
Path cost: 1 per move
递归解法:
递归是非常经典的一种解法
c语言版本:
/八皇后递归解法
#include<iostream>
using namespace std;
int queen[8]={-1,-1,-1,-1,-1,-1,-1,-1};
int count=0;
bool available(int pointi,int pointj){//判断某个皇后是否与已有皇后冲突
for(int i=0;i<pointi;i++){
if(pointj==queen[i])return false;//同一列拒绝