求大神帮忙!怎样将原来的统计个数变成输出棋盘或者输出坐标啊!
由n2个方块排成n行n列的正方形称为“n元棋盘”。如果两个皇后位于n元棋盘上的同一行或同一列或同一对角线上,则称它们为互相攻击。要求输出使n无棋盘上的n个皇后互不攻击的所有布局。具体要求如下;
(1)n可由键盘输入。
(2)在输入n后,动态建立方法说明中所需要建立的数组空间;程序运行结束时释放该
存储空间。
(3)分别用n=4,5,6运行你的程序。
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
/**//* 记录当前的放置方案 */
int *x;
/**//* 皇后的个数N 和 方案数目 */
int n,sum=0;
/**//* 检查参数所指示的这一行皇后放置方案是否满足要求 */
int Place(int);
/**//* 递归方法求取皇后放置方案*/
void Queen1(void);
/**//* 用户递归求取皇后放置方案的递归方法 */
void TraceBack(int);
/**//* 打印当前成功的放置方案 */
void PrintMethod(void);
void main(void)
{
long start,stop;
printf("input n: ");
scanf("%d",&n);
x=(int *)malloc(sizeof(int)*n);
Queen1();
printf("\nmethod total %d \n",sum);
}
int Place(int r)
{
int i;
for(i=0;i<r;i++){
if(x[r]==x[i] || abs(r-i)==abs(x[r]-x[i]))
return 0;
}
return 1;
}
void TraceBack(int r)
{
int i;
if(r>=n){
sum++;
/**//* PrintMethod(); */
}else{
for(i=0;i<n;i++){
x[r]=i;
if(Place(r)) TraceBack(r+1);
}
}
}
void Queen1(void)
{
TraceBack(0);
}
怎样将原来的统计个数变成输出棋盘或者输出坐标啊!