龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

八皇后问题的求解

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
/*该程序产生的最终结果存于当前工程目录下的result.txt文件中*/ #include #include #include //用类定义一个节点,包含x坐标和y坐标以及该节点的值value class CNode { public: int x; int y; int value; voi

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

  #include

  #include

  #include

  //用类定义一个节点,包含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<

   }

   return;

  }

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

  int InSameLine(CNode a)

  {

   int i,j;

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

   for(j=0;j<(i

   {

   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<<"第"<

   PrintArray(out);

   cnt++;

   out<

   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<<"总共有"<

   outfile.close();

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

   return;

  }

  

  

  

精彩图集

赞助商链接