搜索算法

深度优先搜索(dfs)以八皇后问题为例

#define MAX 105

int n,vis[3][MAX];
int cnt=0;

void dfs(int d){
  if(d==n+1){
    cnt++;
    return;
  }
  for(int j=1;j<=n;j++){
    if(!vis[0][j] && !vis[1][d-j+n] && !vis[2][d+j]){ // 分别表示这一列、副对角线、主对角线
      vis[0][j]=vis[1][d-j+n]=vis[2][d+j]=1;
      dfs(d+1);
      vis[0][j]=vis[1][d-j+n]=vis[2][d+j]=0;
    }
  }
}


猜你喜欢

转载自blog.csdn.net/zhq9695/article/details/80925968
今日推荐