毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 课程设计 >> 正文

C++八皇后问题 第2页

更新时间:2011-5-21:  来源:毕业论文
#include<iostream>
using namespace std;
#include<stdlib.h>

class Queen{
 friend int nQueen(int);
private:
 bool Place(int k);
 void Backtrack(int t);
 int n,
  *x;
 long sum;
};

bool Queen::Place(int k){//判断该位置是不是能够放皇后
 for(int j=1;j<k;j++)
  if(abs(k-j)==abs(x[j]-x[k])||(x[j]==x[k]))
   return false;
 return true;
}

void Queen::Backtrack(int t){//回溯算法
 if(t>n){
  sum++;
  for(int i=1;i<=n;i++)
   cout<<"("<<i<<","<<x[i]<<")  ";
  cout<<endl;
  for(i=1;i<=n;i++){//显示出排放的样子
   for(int j=1;j<=n;j++){
    if(x[i]==j){
     cout<<"Q";
     continue;
    }
    cout<<"+";
   }
   cout<<endl;
原文请找腾讯752018766辣,文-论'文.网http://www.751com.cn  
 }
 else
  for(int i=1;i<=n;i++){
   x[t]=i;
   if(Place(t))
    Backtrack(t+1);
  }
}

int nQueen(int n){
 Queen X;
 X.n=n;
 X.sum=0;
 int *p=new int[n+1];
 for(int i=0;i<=n;i++)
  p[i]=0;
 X.x=p;
 X.Backtrack(1);
 delete []p;
 return X.sum;
}

int main(){
 int n;
 cout<<"请输入几个皇后: ";
 cin>>n;
 cout<<"共"<<nQueen(n)<<"个解"<<endl;
 return 0;
}

上一页  [1] [2] 

C++八皇后问题 第2页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©751com.cn 辣文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。