资源简介
有多种方法解决八皇后问题,在这里我用的是回溯法解决八皇后问题。大家一起来学习呀!!
代码片段和文件信息
#include
#include
int count = 0;
int IsCorrect(int i int j int (*Q)[8])
{
int s t;
for(s=i t=0; t<8; t++)//判断行
{
if(Q[s][t] == 1 && t != j)
{
return 0;
}
}
for(t=j s=0; s<8; s++)//判断列
{
if(Q[s][t] == 1 && s != i)
{
return 0;
}
}
for(s=i-1 t=j-1; s>=0 && t>=0; s-- t--)//判断左上角
{
if(Q[s][t] == 1)
{
return 0;
}
}
for(s=i+1 t=j+1; s<8 && t<8; s++ t++)//判断右下角
{
if(Q[s][t] == 1)
{
return 0;
}
}
for(s=i-1 t=j+1; s>=0 && t<8; s-- t++)//判断右上角
{
if(Q[s][t] == 1)
{
return 0;
}
}
for(s=i+1 t=j-1; s<8 && t>=0; s++ t--)//判断左下角
{
if(Q[s][t] == 1)
{
return 0;
}
}
return 1;
}
void Queen(int j int (*Q)[8])
{
int i k;
if(j == 8)
{
for(i=0; i<8; i++)
{
for(k=0; k<8; k++)
{
printf(“%d “Q[i][k]);
}
printf(“\n“);
}
printf(“\n“);
count++;
return;
}
for(i=0; i<8; i++)
{
if(IsCorrect(i j Q))
{
Q[i][j] = 1;
Queen(j+1 Q);
Q[i][j] = 0;
}
}
}
void main(void)
{
int Q[8][8];
int i j;
for(i=0; i<8; i++)
{
for(j=0; j<8; j++)
{
Q[i][j] = 0;
}
}
Queen(0 Q);
printf(“The total number of Eight_Queen is%d\n“count);
getch();
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 33792 2011-02-15 08:30 回溯法解决八皇后问题\Debug\vc60.idb
文件 45056 2011-02-15 08:29 回溯法解决八皇后问题\Debug\vc60.pdb
文件 172142 2011-02-15 08:30 回溯法解决八皇后问题\Debug\回溯法解决八皇后问题.exe
文件 187140 2011-02-15 08:30 回溯法解决八皇后问题\Debug\回溯法解决八皇后问题.ilk
文件 5224 2011-02-15 08:29 回溯法解决八皇后问题\Debug\回溯法解决八皇后问题.obj
文件 157364 2010-12-30 16:33 回溯法解决八皇后问题\Debug\回溯法解决八皇后问题.pch
文件 443392 2011-02-15 08:30 回溯法解决八皇后问题\Debug\回溯法解决八皇后问题.pdb
文件 1352 2010-12-30 16:54 回溯法解决八皇后问题\回溯法解决八皇后问题.c
文件 3569 2011-02-15 08:29 回溯法解决八皇后问题\回溯法解决八皇后问题.dsp
文件 548 2011-02-15 08:30 回溯法解决八皇后问题\回溯法解决八皇后问题.dsw
文件 41984 2011-02-15 08:30 回溯法解决八皇后问题\回溯法解决八皇后问题.ncb
文件 48640 2011-02-15 08:30 回溯法解决八皇后问题\回溯法解决八皇后问题.opt
文件 816 2011-02-15 08:30 回溯法解决八皇后问题\回溯法解决八皇后问题.plg
目录 0 2010-12-30 16:51 回溯法解决八皇后问题\Debug
目录 0 2011-02-15 08:30 回溯法解决八皇后问题
----------- --------- ---------- ----- ----
1141019 15
评论
共有 条评论