您的位置:首页 > 其它

简单算法—N皇后构造解,n>=4

2015-12-09 15:00 183 查看
//N皇后构造解,n>=4

 

void even1(int n,int *p){

       int i;

       for (i=1;i<=n/2;i++)

              p[i-1]=2*i;

       for (i=n/2+1;i<=n;i++)

              p[i-1]=2*i-n-1;

}

 

void even2(int n,int *p){

       int i;

       for (i=1;i<=n/2;i++)

              p[i-1]=(2*i+n/2-3)%n+1;

       for (i=n/2+1;i<=n;i++)

              p[i-1]=n-(2*(n-i+1)+n/2-3)%n;

}

 

void generate(int,int*);

void odd(int n,int *p){

       generate(n-1,p),p[n-1]=n;

}

 

void generate(int n,int *p){

       if (n&1)

              odd(n,p);

       else if (n%6!=2)

              even1(n,p);

       else

              even2(n,p);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法