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;
}
相关文章
|
索引
八皇后问题
八皇后问题
242 0
|
C++
【LeetCode343】剪绳子(动态规划)
(1)确定状态 dp[i]是将正整数i拆成2个及其以上的正整数后,求所有数的乘积值。
148 0
【LeetCode343】剪绳子(动态规划)
过河卒-蓝桥杯-动态规划
过河卒-蓝桥杯-动态规划
138 0
|
Web App开发 算法
蓝桥杯 floyd算法练习 最短路
蓝桥杯 floyd算法练习 最短路
132 0
蓝桥杯 floyd算法练习 最短路
|
算法
【算法】 八皇后问题之回溯法
会下国际象棋的人都很清楚:皇后可以在横、竖、斜线上不限步数地吃掉其他棋子。如何将8个皇后放在棋盘上(有8 * 8个方格),使它们谁也不能被吃掉!这就是著名的八皇后问题。每次填满第一行第一列,当不满足时候,试下第一行第二列,依次进行,递归的出口为找到第八个点,跳出递归。,在循环里面还要判断是否满足不同行,不同列,不同对角线。使用回溯法来解决该问题,下面的代码是我看到过的最精简的代码,相关的注释都写在代码上了。运行得出结果,总共有92中结果。
279 0
对于八皇后问题的详细说明
八皇后为解决问题说明,题目在主页
71 0
对于八皇后问题的详细说明
|
定位技术
宝岛探险(求岛屿大小,染色法) 宽搜 深搜
宝岛探险(求岛屿大小,染色法) 宽搜 深搜
宝岛探险(求岛屿大小,染色法) 宽搜 深搜