八皇后问题递归求解二
2015-03-06 16:40
369 查看
#include<iostream.h>
#include<stdio.h>
#define N 8
int queen
;
int count=1; //用来统计总共有多少种算法
int queennumber=1; //用来计算是否达到了八个皇后
void createqueen(){ //创造棋盘
int i=0;
int j=0;
for(;i<N;i++){
for(j=0;j<N;j++)
queen[i][j]=0;}
}
void printqueen(){ //输出棋盘
int i=0;
int j=0;
for(;i<N;i++){
for(j=0;j<N;j++){
cout<<queen[i][j];
}
cout<<endl;
}
cout<<endl;
//getchar();
count++;
cout<<count-1<<endl;
}
bool checkqueen(int x,int y){ //更改棋局
for(int i=1;(x-i)>=0;i++)
{if(queen[x-i][y]==1)
return false;}
i=1;
while(x-i>=0&&y+i<N){
if(queen[x-i][y+i]==1)
return false;
i++;}
i=1;
while(x-i>=0&&y-i>=0){
if(queen[x-i][y-i]==1)
return false;
i++;}
return true;
}
void run(int x){
bool is=false;
for(int i=0;i<N;i++){
if(x<N)
is=checkqueen(x+1,i);
if(is==true){
queen[x+1][i]=1;
queennumber++;
if(queennumber==N)
printqueen();
run(x+1);
queennumber--;
queen[x+1][i]=0;
}
}
}
void main(){
for(int i=0;i<N;i++){
createqueen();
queen[0][i]=1;
queennumber=1;
run(0);
//getchar();
}
cout<<endl<<count-1<<endl;
}
#include<stdio.h>
#define N 8
int queen
;
int count=1; //用来统计总共有多少种算法
int queennumber=1; //用来计算是否达到了八个皇后
void createqueen(){ //创造棋盘
int i=0;
int j=0;
for(;i<N;i++){
for(j=0;j<N;j++)
queen[i][j]=0;}
}
void printqueen(){ //输出棋盘
int i=0;
int j=0;
for(;i<N;i++){
for(j=0;j<N;j++){
cout<<queen[i][j];
}
cout<<endl;
}
cout<<endl;
//getchar();
count++;
cout<<count-1<<endl;
}
bool checkqueen(int x,int y){ //更改棋局
for(int i=1;(x-i)>=0;i++)
{if(queen[x-i][y]==1)
return false;}
i=1;
while(x-i>=0&&y+i<N){
if(queen[x-i][y+i]==1)
return false;
i++;}
i=1;
while(x-i>=0&&y-i>=0){
if(queen[x-i][y-i]==1)
return false;
i++;}
return true;
}
void run(int x){
bool is=false;
for(int i=0;i<N;i++){
if(x<N)
is=checkqueen(x+1,i);
if(is==true){
queen[x+1][i]=1;
queennumber++;
if(queennumber==N)
printqueen();
run(x+1);
queennumber--;
queen[x+1][i]=0;
}
}
}
void main(){
for(int i=0;i<N;i++){
createqueen();
queen[0][i]=1;
queennumber=1;
run(0);
//getchar();
}
cout<<endl<<count-1<<endl;
}
相关文章推荐
- 递归--基于位运算的八皇后问题求解
- ai-2698-八皇后问题-C语言-递归求解
- 关于递归求解八皇后问题
- 八皇后问题--递归求解
- 八皇后问题递归求解易出错问题
- Matlab 递归求解八皇后问题
- 八皇后问题求解——之递归
- C语言回溯法递归求解八皇后问题
- Python求解“八皇后”问题的递归思路
- 利用递归求解八皇后问题
- 八皇后递归求解问题
- 八皇后问题递归实现(C++)
- 递归求解8皇后问题
- 以前的作业:八皇后问题求解
- 递归-回溯法求解8皇后问题(C)
- 八皇后问题--递归
- 数据结构与算法中的“递归”——用回溯法求解8皇后问题
- 递归问题求解学习一
- [导入]二维数组求解八皇后问题
- 八皇后问题求解----C++实现