level 11
歆沣
楼主
//研究算法多日,才发现古老的八皇后问题其实非常简单
#include<iostream>
#include<math.h>
using namespace std;
#define N 8
int p[N];//记录棋盘状态 //考察皇后x放在p[x]处是否不发生冲突
bool f(int x){
for(int i=0;i<x;i++)
if(p[i]==p[x]||abs(x-i)==abs(p[x]-p[i]))
return 0;
return 1;
}//放置第x个棋子棋子
void fun(int x){
if(x==N){
for(int i=0;i<N;i++)cout<<"("<<i+1<<","<<p[i]+1<<")"<<" ";
cout<<endl;
}else{
for(int i=0;i<N;i++){
p[x]=i;
if(f(x))fun(x+1);
}
}
}
int main(){
fun(0);
}
傲世孤尘
2013-05-25
2013年07月22日 14点07分
1
#include<iostream>
#include<math.h>
using namespace std;
#define N 8
int p[N];//记录棋盘状态 //考察皇后x放在p[x]处是否不发生冲突
bool f(int x){
for(int i=0;i<x;i++)
if(p[i]==p[x]||abs(x-i)==abs(p[x]-p[i]))
return 0;
return 1;
}//放置第x个棋子棋子
void fun(int x){
if(x==N){
for(int i=0;i<N;i++)cout<<"("<<i+1<<","<<p[i]+1<<")"<<" ";
cout<<endl;
}else{
for(int i=0;i<N;i++){
p[x]=i;
if(f(x))fun(x+1);
}
}
}
int main(){
fun(0);
}
傲世孤尘
2013-05-25