068.八皇后问题

简介: 068.八皇后问题
#include <math.h>
#include <stdio.h>
#define MAX 8 /* 棋子数及棋盘大小MAXxMAX */
int board[MAX];
/* 印出結果 */
void show_result()
{
    int i;
    for(i=0;i<MAX;i++)
  printf("(%d,%d)",i,board[i]);
    printf("\n");
}
/* 检查是否在同一直橫斜线上有其它棋子 */
int check_cross(int n)
{
    int i;
    for(i=0;i<n;i++){
  if(board[i]==board[n] || (n-i)==abs(board[i]-board[n]))return 1;
    }
    return 0;
}
/* 放棋子到棋盘上 */
void put_chess(int n)
{
    int i;
    for(i=0;i<MAX;i++){
  board[n]=i;
  if(!check_cross(n)){
      if(n==MAX-1) show_result();/* 找到其中一种放法了...印出結果 */
      else put_chess(n+1);
  }
    }
}
void main()
{
  clrscr();
  puts("The possible placements are:");
    put_chess(0);
    puts("\n Press any key to quit...");
  getch();
    return;
}
相关文章
|
5月前
|
算法
【算法学习】—n皇后问题(回溯法)
【算法学习】—n皇后问题(回溯法)
|
6月前
|
索引
八皇后问题
八皇后问题
139 0
|
7月前
|
存储 算法 搜索推荐
蓝桥杯丨分治算法
蓝桥杯丨分治算法
37 0
|
10月前
1213:八皇后问题
1213:八皇后问题
|
机器学习/深度学习
递归实现 八皇后问题(*)
递归实现 八皇后问题(*)
105 0
递归实现 八皇后问题(*)
|
算法
【算法】 八皇后问题之回溯法
会下国际象棋的人都很清楚:皇后可以在横、竖、斜线上不限步数地吃掉其他棋子。如何将8个皇后放在棋盘上(有8 * 8个方格),使它们谁也不能被吃掉!这就是著名的八皇后问题。每次填满第一行第一列,当不满足时候,试下第一行第二列,依次进行,递归的出口为找到第八个点,跳出递归。,在循环里面还要判断是否满足不同行,不同列,不同对角线。使用回溯法来解决该问题,下面的代码是我看到过的最精简的代码,相关的注释都写在代码上了。运行得出结果,总共有92中结果。
209 0
|
机器学习/深度学习 算法
【回溯算法篇】N皇后问题
【回溯算法篇】N皇后问题
【回溯算法篇】N皇后问题
|
机器学习/深度学习 算法
<<算法很美>>——(六)——回溯算法(下)—N皇后问题
<<算法很美>>——(六)——回溯算法(下)—N皇后问题
<<算法很美>>——(六)——回溯算法(下)—N皇后问题
|
算法 Java
【递归与回溯算法】汉诺塔与八皇后问题详解
文章目录 1 汉诺塔问题 1.1 汉诺塔问题概述 1.2 思路分析 1.3 代码实现(Java) 1.4 结果验证 2 八皇后问题 2.1 八皇后问题概述 2.2 思路分析 2.2.1 问题划分与分析 2.2.2 涉及到的数据结构分析 2.2.3 上下对角线与行列的关系 2.3 代码实现(Java) 2.4 结果验证
【递归与回溯算法】汉诺塔与八皇后问题详解