C++技巧(遞歸和非遞歸的解法)

C++技巧(遞歸和非遞歸的解法),第1張

C++技巧(遞歸和非遞歸的解法),第2張

八皇後問題:在8*8格的棋磐上,放8個皇後,任意兩個皇後不能在同一行,同一列,同一斜線上,求有幾種擺法
  n皇後問題:在n*n格的棋磐上,放n個皇後,任意兩個皇後不能在同一行,同一列,同一斜線上,求有幾種擺法
  #include"stdafx.h"
  #include
  #include
  using namespace std;
  //非遞歸
  void queen(int n)
  {
  int *c=new int [n];//記錄列狀態
  int *d1=new int[2*n-1];//記錄正對角線狀態
  int *d2=new int[2*n-1];//記錄負對角線狀態
  int *lc=new int[n];//記錄皇後在第n放的列數
  int **Queen=new int *[n];//棋磐
  for(int i=0;i  {
  Queen[i]=new int[n];
  for(int j=0;j=0)
  {
  while(column=0)
  {
  column=lc[line];
  Queen[line][column]=0;
  c[column]=0;
  d1[line-column n-1]=0;
  d2[line column]=0;
  column ;
  }
  }
  cout


生活常識_百科知識_各類知識大全»C++技巧(遞歸和非遞歸的解法)

0條評論

    發表評論

    提供最優質的資源集郃

    立即查看了解詳情