八皇后问题的求解

王朝other·作者佚名  2008-06-01
窄屏简体版  字體: |||超大  

/*该程序产生的最终结果存于当前工程目录下的result.txt文件中*/

#include<iostream.h>

#include<iomanip.h>

#include<fstream.h>

//用类定义一个节点,包含x坐标和y坐标以及该节点的值value

class CNode

{

public:

int x;

int y;

int value;

void SetValue()

void ClearValue()

};

CNode array[8][8];//定义一个8*8的节点矩阵

int cnt=0;//定义一个计数器

//打印函数,打印此时的矩阵数据

void PrintArray(ofstream& out)

{

int i,j;

for(i=0;i<8;i++)

out<<endl;

}

return;

}

//判定a节点是否与位于a节点之前已存在所有任一节点位于同一直线上

int InSameLine(CNode a)

{

int i,j;

for(i=0;i<=a.y;i++)

for(j=0;j<(i<a.y?8:a.x);j++)

{

if(array[i][j].value==1)

{

if(a.x==array[i][j].xa.y==array[i][j].y

a.x-a.y==array[i][j].x-array[i][j].y

a.x+a.y==array[i][j].x+array[i][j].y)

return 1;

}

}

return 0;

}

//依次产生所有的节点

void CreateNextNode(int row,ofstream out)

{

if(row==8)

{

out<<"第"<<cnt+1<<"种解法"<<endl;

PrintArray(out);

cnt++;

out<<endl;

return;

}

for(int j=0;j<8;j++)

}

}

//主函数main()

void main()

{

ofstream outfile("result.txt");

if(!outfile)

int i,j;

for(i=0;i<8;i++)

for(j=0;j<8;j++)

CreateNextNode(0,outfile);

outfile<<"总共有"<<cnt<<"种解法"<<endl;

outfile.close();

cout<<"传输文件完毕!"<<endl;

return;

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航