六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 43|回复: 0

8皇后问题c++的递归实现

[复制链接]

升级  90%

9

主题

9

主题

9

主题

童生

Rank: 1

积分
45
 楼主| 发表于 2013-2-4 19:58:30 | 显示全部楼层 |阅读模式
最近用C++递归形式实现了8皇后问题,可能效率有点低
#include   <iostream>   using namespace std;int count=0;void placeQueen(int m,int flag[8][8],char chess[8][8]){      int j; for(j=0;j<8;j++)if(flag[m][j]==0){     int ii,jj; char c[8][8];                 int f[8][8]; for(ii=0;ii<8;ii++)         for(jj=0;jj<8;jj++) { c[ii][jj]=chess[ii][jj];         f[ii][jj]=flag[ii][jj];  }         for(ii=0;ii<8;ii++)         for(jj=0;jj<8;jj++) {  if(f[ii][jj]==0 && (ii+jj==m+j || m==ii || j==jj || m-j==ii-jj))             f[ii][jj]=-1; }   c[m][j]='#';                  f[m][j]=1; if(m==7){ cout<<++count<<endl;for(ii=0;ii<8;ii++)  {for(jj=0;jj<8;jj++){cout<<c[ii][jj]<<" ";}cout<<endl;} cout<<endl;cout<<endl;return;}elseplaceQueen(m+1,f,c);}//if(j==8)return;  }  void   main()     {      char c[8][8];      int f[8][8];  int i,j;      for(i=0;i<8;i++)  for(j=0;j<8;j++)  {  f[i][j]=0;  c[i][j]='*';  } // for(i=0;i<8;i++)     placeQueen(0,f,c);  }
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表