八皇后问题

简介: 八皇后问题递归算法如下,在win-tc和tc2.0下已调试通过: #include #include #define MAX 8 /* 棋子数及棋盘大小MAXxMAX */ int board[MAX]; /* 印出结果 */ void show_result() { ...
八皇后问题递归算法如下,在win-tc和tc2.0下已调试通过:
#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;
}
相关文章
|
机器学习/深度学习
【N皇后】
【N皇后】
|
6月前
|
算法 C++
一题带你写出图论算法模板!!!
一题带你写出图论算法模板!!!
|
索引
八皇后问题
八皇后问题
236 0
|
机器学习/深度学习 算法
【回溯算法篇】N皇后问题
【回溯算法篇】N皇后问题
【回溯算法篇】N皇后问题
|
机器学习/深度学习 算法
<<算法很美>>——(六)——回溯算法(下)—N皇后问题
<<算法很美>>——(六)——回溯算法(下)—N皇后问题
<<算法很美>>——(六)——回溯算法(下)—N皇后问题
|
算法
【算法】 八皇后问题之回溯法
会下国际象棋的人都很清楚:皇后可以在横、竖、斜线上不限步数地吃掉其他棋子。如何将8个皇后放在棋盘上(有8 * 8个方格),使它们谁也不能被吃掉!这就是著名的八皇后问题。每次填满第一行第一列,当不满足时候,试下第一行第二列,依次进行,递归的出口为找到第八个点,跳出递归。,在循环里面还要判断是否满足不同行,不同列,不同对角线。使用回溯法来解决该问题,下面的代码是我看到过的最精简的代码,相关的注释都写在代码上了。运行得出结果,总共有92中结果。
259 0
对于八皇后问题的详细说明
八皇后为解决问题说明,题目在主页
62 0
对于八皇后问题的详细说明