八皇后问题的代码
八皇后问题完整的算法实现:
#include <stdio.h>
#define true 1
#define false 0
int a[9], b[7], c[17];
int s[9];
void main( )
{
void print ( ),movequeen( ),eightqueen( );//函数声明
eightqueen( );
}
/*******打印输出一个解的函数*******/
viod print( )
{
int k;
printf("n\行号: 1 2 3 4 5 6 7 8\n");
printf("列号: ");
for (k=1;k<=8;k++)
printf("%4d",s[k]); printf("\n");
}
/* 移去位置(i ,j)上的皇后函数 */
void movequeen(int i,int j)
{
a[j]=1; b[i+j]=1; c[i-j+9]=1;
}
//在此位置插入eightqueen( )函数
void eightqueen( )
{ int i,j;
for(i=2;i<=16;i++) {
if(i>=2 &&i<=9 ) a[i-1]=true;
b[i]=true ;c[i]=true;
}
i=1 ;j=1;
while ( j<=8) {
if (a[j] && b[i+j] &&c[i-j+9]) break;
j++;
}
if (j<=8) {
a[j]=false; b[i+j]=false;
c[i-j+9]=false;
s[i]=j;
if(i==8) {
print ( );
movequeen(i,j);
i--;j=s[i];
movequeen (i,j);
j++;
}
else {
i++ ; j=1;
}
}
else {
i--;
if(i>=1) {
j=s[i];
movequeen(i ,j);
j++;
}
}
}
}
八皇后问题是一个古老而著名的问题,它是回溯算法的典型例题。该问 题是十九世纪德国著名数学家高斯于 1850 年提出的:在 8 行 8 列的 国际象棋棋盘上摆放着八...
7. 运行与测试 7.1 运行演示 7 8 总 结 通过了 19 周这个星期的程序设计,我从中得到了许多的经验以及软件设计的一 些新的思路;从这个八皇后问题设计以及...
八皇后问题实验报告_工学_高等教育_教育专区。实验报告 ——八皇后问题求解(递归和非递归)学号: 专业年级: 姓名: 一、需求分析(要实现的功能描述) 1.问题描述 ...
摘要: 八皇后问题要求在一个8*8的棋盘上放上8个皇后,使得每一个皇后既攻击不 到另外七个皇后,也不被另外七个皇后所攻击.按照国际象棋的规则,一个皇后可以 ...
八皇后问题的实现(C语言)_IT/计算机_专业资料。八皇后c语言的实现,浅显八皇后问题的实现( 语言) 八皇后问题的实现(C 语言) 2008-01-05 20:41 八皇后问题主要...
(xi); } } } 3 八皇后问题的最佳解决方案 } }} } } check(int xi, int n) //该函数是用来判断是否满足约束 { int i; for(i=1;i<=n-1;i++)...
数据结构6.八皇后问题_计算机软件及应用_IT/计算机_专业资料。/* 八皇后问题:设 8 皇后问题的解为 (x1, x2, x3, …,x8), 约束条件为:在 8x8 的棋盘上...
八皇后问题(C语言版)_计算机软件及应用_IT/计算机_专业资料 暂无评价0人阅读0次下载举报文档 八皇后问题(C语言版)_计算机软件及应用_IT/计算机_专业资料。...
八皇后问题_IT/计算机_专业资料。一,问题描述:(根据你所选做题目,写出其问题的文字描述)在一个8×8的棋盘里放置8个皇后, 要求每个皇后两两之间不相"冲" (在...
实验报告实验名称 八皇后问题(栈) 专业班级 智能科学与技术 姓名 学号 2220113159 指导教师 曹志英 日期 2012 年 12 月 6 日 一、实验目的 1. 熟练掌握栈...

我要评论