八皇后问题

简介: 八皇后问题递归算法如下,在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;
}
相关文章
|
7月前
|
存储
【洛谷 P2437】蜜蜂路线 题解(递归+记忆化搜索+高精度)
蜜蜂路线问题:蜜蜂从蜂房$m$到$n$($m&lt;n$)按数字递增爬行。给定$m$和$n$,求路线数。示例:$m=1$,$n=14$,输出$377$。100%数据$1\leq m,n\leq1000$。使用斐波那契序列优化,高精度处理大数。代码实现斐波那契存储并动态规划求解。
107 0
|
8月前
|
安全 算法 测试技术
【动态规划】【广度优先】LeetCode2258:逃离火灾
【动态规划】【广度优先】LeetCode2258:逃离火灾
|
8月前
|
机器学习/深度学习 存储
leetcode-1036:逃离大迷宫
leetcode-1036:逃离大迷宫
39 0
|
索引
八皇后问题
八皇后问题
242 0
|
机器学习/深度学习 算法
<<算法很美>>——(六)——回溯算法(下)—N皇后问题
<<算法很美>>——(六)——回溯算法(下)—N皇后问题
<<算法很美>>——(六)——回溯算法(下)—N皇后问题
|
算法
【算法】 八皇后问题之回溯法
会下国际象棋的人都很清楚:皇后可以在横、竖、斜线上不限步数地吃掉其他棋子。如何将8个皇后放在棋盘上(有8 * 8个方格),使它们谁也不能被吃掉!这就是著名的八皇后问题。每次填满第一行第一列,当不满足时候,试下第一行第二列,依次进行,递归的出口为找到第八个点,跳出递归。,在循环里面还要判断是否满足不同行,不同列,不同对角线。使用回溯法来解决该问题,下面的代码是我看到过的最精简的代码,相关的注释都写在代码上了。运行得出结果,总共有92中结果。
278 0
对于八皇后问题的详细说明
八皇后为解决问题说明,题目在主页
71 0
对于八皇后问题的详细说明

热门文章

最新文章