|
#include<stdio.h> #include<malloc.h> #include<stdlib.h> #include<math.h> #define MAX 100 int pos[MAX]={0};//位置 int n=4;//n为四代表四皇后,为八代表八皇后 void Display(){ int i,j; for(i=1;i<=n;i++){ for(j=1;j<=n;j++) if(pos==j) printf("* "); else printf("0 "); printf("\n"); } printf("\n"); } int OK(int i,int j){//判断布局合法 int k,flag; flag=1; for(k=1;k<i;k++) if(pos[k]==j||abs(j-pos[k])==abs(i-k)) { flag=0; break; } return flag; } void Trial(int i,int n){ int j; if(i>n) Display(); for(j=1;j<=n;j++) if(OK(i,j)) {pos=j;Trial(i+1,n);pos=0;} } int main(){ Trial(1,n); return 0; }
|