域问题
程序代码:
#include <iostream> using namespace std; int x[8]; //static int count=0; //定义这里? 位置1 bool right(int*,int);//判断位置是否合适 void print(int*,int);//打印位置 void queen(int ,int); int main() { queen(1,8); system("pause"); return 0; } bool right(int* x,int step) { for(int i=1;i<step;i++) { if(x[step]==x[i]||abs(x[step]-x[i])==abs(step-i)) return false; } return true; } void queen(int step,int n) { static int count=0;//定义这里? 位置2 x[step]=0; for(int i=1;i<=n;i++) { x[step]=i; if(right( x,step)) { if(step==n) { count++; cout<<count<<" "; print(x,n); return; } else queen(step+1,n); } } } void print(int* x,int len) { for(int i=1;i<=len;i++) cout<<i<<"行"<<x[i]<<"列"; cout<<endl; }