最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
八皇后问题的递归求解
时间:2022-07-02 11:00:28 编辑:袖梨 来源:一聚教程网
八皇后问题的递归算法
#include
#include
#define N 8 /* 棋盘边长 */
#define XXN 15 /* 正(反)对角线个数 */
#define TRUE 1
#define FALSE 0
int map[N][N];/* 棋盘 */
int col[N]; /* 列 */
int XX[XXN]; /* 正对角线 */
int YY[XXN]; /* 反对角线 */
FILE* fp;
int num=0; /* 解的个数 */
/**
显示一个解
*/
void showMap()
{
int i,j;
fprintf(fp,"n--------------------------n");
for(i=0;i
fprintf(fp,"n");
}
}
/**
递归求解函数
*/
int try(int y)
{
int i,j;
int success=FALSE;
if( y==N){ /* 求出一个解*/
showMap();
num++;
return TRUE;
}
for(i=0;i
{
XX[N-y+i]=YY[i+y]=col[i]=map[y][i]=1;
if(try(y+1)) success=TRUE; /* 放下一个皇后 */
XX[N-y+i]=YY[i+y]=col[i]=map[y][i]=0;
}
}
return success;
}
main()
{
int i,j,result;
fp=fopen("queen8.txt","w+"); fprintf(fp,"n start.............."); }
for(i=0;i
for(i=0;i
if(!try(0))printf("n no resolution!");
fprintf(fp,"n num=%d",num);
相关文章