下载此文档

C++技巧(递归和非递归的解法).docx


文档分类:高等教育 | 页数:约5页 举报非法文档有奖
1/5
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/5 下载此文档
文档列表 文档介绍
C++技巧(递归和非递归的解法)
n皇后问题:在n*n格的棋盘上,放n个皇后,任意两个皇后不能在同一行,同一列,同一斜线上,求有几种摆法
  #include ““
  #include
  #include
  

C++技巧(递归和非递归的解法)
n皇后问题:在n*n格的棋盘上,放n个皇后,任意两个皇后不能在同一行,同一列,同一斜线上,求有几种摆法
  #include ““
  #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=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<<num<<”\t”<<count<<endl;;
  }
  //递归
  void queen1(int i,int**Queen,int *a,int *d1,int *d2,int
  for(iColumn=0;iColumn<n;iColumn++)
  {
  count++;
  if(a[iColumn]==0
  a[iColumn]=1;
  d1[i-iColumn+n-1]=1;
  d2[i+iColumn]=1;
  if(i<n-1)


  queen1(i+1,Queen,a,d1,d2,n,QueenNumber,count);
  else
  {
  QueenNumber++;
  /*
  fstream outstuf;
  (““,ios::out|ios::app);
  for(int i=0;i<8;i++)
  {
  for(int j=0;j<8;j++)
  {
  outstuf<<Queen[i][j]<<“ “;
  }
  outstuf<<“\r\n“;
  }
  outstuf<<“\r\n“

C++技巧(递归和非递归的解法) 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
最近更新