当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++进阶与实例

八皇后问题的求解

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

相关内容
赞助商链接