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;
}
相关文章
|
6月前
|
算法
【算法学习】—n皇后问题(回溯法)
【算法学习】—n皇后问题(回溯法)
|
索引
八皇后问题
八皇后问题
236 0
|
机器学习/深度学习 算法
蓝桥杯:递推算法 递归算法 例题:斐波纳契数列
蓝桥杯:递推算法 递归算法 例题:斐波纳契数列
66 0
|
机器学习/深度学习 算法
【回溯算法篇】N皇后问题
【回溯算法篇】N皇后问题
【回溯算法篇】N皇后问题
|
机器学习/深度学习 算法
<<算法很美>>——(六)——回溯算法(下)—N皇后问题
<<算法很美>>——(六)——回溯算法(下)—N皇后问题
<<算法很美>>——(六)——回溯算法(下)—N皇后问题
|
算法
【算法】 八皇后问题之回溯法
会下国际象棋的人都很清楚:皇后可以在横、竖、斜线上不限步数地吃掉其他棋子。如何将8个皇后放在棋盘上(有8 * 8个方格),使它们谁也不能被吃掉!这就是著名的八皇后问题。每次填满第一行第一列,当不满足时候,试下第一行第二列,依次进行,递归的出口为找到第八个点,跳出递归。,在循环里面还要判断是否满足不同行,不同列,不同对角线。使用回溯法来解决该问题,下面的代码是我看到过的最精简的代码,相关的注释都写在代码上了。运行得出结果,总共有92中结果。
265 0
对于八皇后问题的详细说明
八皇后为解决问题说明,题目在主页
63 0
对于八皇后问题的详细说明