WEB开发网
开发学院软件开发C++ 八皇后问题的求解 阅读

八皇后问题的求解

 2008-03-08 12:27:06 来源:WEB开发网   
核心提示:/*该程序产生的最终结果存于当前工程目录下的result.txt文件中*/#include<iostream.h>#include<iomanip.h>#include<fstream.h>//用类定义一个节点,包含x坐标和y坐标以及该节点的值valueclass CNode{pub

/*该程序产生的最终结果存于当前工程目录下的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;
}


Tags:皇后 问题 求解

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接