VC八皇后问题

来源:百度知道 编辑:UC知道 时间:2024/04/30 13:29:38
设计程序完成如下要求:
在8*8的国际象棋盘上放置八个皇后,使得这八个棋子;不能互相被对方吃掉。要求:
1、依次输出各种成功的放置方法
2、画出棋盘的图形形式,并在带上动态的演示试探过程
3、程序能方便的移植到其他规格的棋盘上

不可能的吧!
我不懂编程,但会一点国际象棋.空棋盘上后的攻击范围是21个格子以上.很难想象8个后放棋盘上不会被对方吃掉.
有时间我再补充我的回答!

#include <cstdlib>
#include <iostream>

using namespace std;
char Queen[8][8];
int a[8];//列冲突检测
int b[15];//主对角线冲突检测,小标为i-j+7;
int c[15];//从对角线冲突检测,小标为i+j;

//针对每行进行递归调用,每行仅尝试放置一个皇后,行冲突自然避免。
void queen(int); //函数声明
int main(int argc, char *argv[])
{
int iLine,iColumn;
for(iLine=0;iLine<8;iLine++){
//列标记冲突初始化,表示没有冲突。
a[iLine]=0;
//棋盘初始化
for(iColumn=0;iColumn<8;iColumn++){
Queen[iLine][iColumn]=' ';
}
}
//主从对角线冲突标记初始化,表示没有冲突。
for(iLine=0;iLine<15;iLine++){
b[iLine]=c[iColumn]=0;
}
//从第0行开始递归调用。
queen(0);
system("PAUSE");
return EXIT_SUCCESS;
}

void queen(int i){
static int count=0;
int iColumn;
for(iColumn=0;iColumn<8;iColumn++){
/