Advertisement

N皇后问题(基于递归回溯法的C语言实现)

阅读量:

N皇后问题

在n×n的棋盘上,需要安置n个皇后,使得这些皇后之间不会互相攻击。根据国际象棋的规则,皇后可以对与其处于同一行、同一列或同一斜线上的棋子发起攻击。

当前设定为4个皇后,需将其放置于4×4的棋盘中,并列举出所有可能的摆放方式。


在此过程中无需构建二维数组,仅需使用i表示列,而a[i]则用于表示对应的行位置。

代码:

复制代码
 #include<stdio.h>

    
 #define MAX 10
    
 #define n 4 //4个皇后
    
 int a[MAX];//第i个皇后在a[i]上
    
 int sum = 0;
    
  
    
 int detection(int x,int y) {//判断是否能放
    
 	for (int i = 1; i <= x; i++) {
    
 		if (a[i] == y)return 0;//|有皇后
    
 		if (i + a[i] == x + y)return 0;//斜边右边有皇后
    
 		if (i - a[i] == x - y)return 0;//斜边左边有皇后
    
 	}return 1;//可以放皇后
    
 }
    
  
    
 void queen(int row) {//第row个皇后在?

全部评论 (0)

还没有任何评论哟~