八皇后C语言代码问题

2025-03-07 08:37:36
推荐回答(2个)
回答1:

应该改为:#include
#include
#define max 9//棋子数及棋盘大小max*max
int a[max];

/* 打印棋盘 */
int m=1;
void Print(int a[])
{
int i, j;
printf("这是第%d种情况",m);
for(i=0;i<=max;i++)
{
for(j=0;j<=max;j++)
if(j==a[i])
printf("@");
else
printf("*");
}
printf("\n\n");
m++;
}

int Judge(int k,int a[])//判断同一行,列,主负对角线上有无棋子
{
int i;
for(i=0;i if(a[i]==a[k] || (k-i)==abs(a[i]-a[k]))return 1;//函数名abs,实现求整数的绝对值
}
return 0;
}

/* 放置皇后 */
void backtrack(int t,int a[])
{
int i;
for(i=0;i a[t]=i;
if(!Judge(t,a)){
if(t==max-1) Print(a);
else backtrack(t+1,a);
}
}
}

int main()
{
backtrack(0,a);
return 0;
}

回答2:

#include
#include
#define MAX 8 /* 棋子数及棋盘大小MAXxMAX */
int board[MAX];

/* 印出结果 */
void show_result()
{
int i;
for(i=0;i printf("(%d,%d)",i,board[i]);
printf("\n");
}

/* 检查是否在同一直横斜线上有其它棋子 */
int check_cross(int n)
{
int i;
for(i=0;i if(board[i]==board[n] || (n-i)==abs(board[i]-board[n]))return 1;
}
return 0;
}

/* 放棋子到棋盘上 */
void put_chess(int n)
{
int i;
for(i=0;i board[n]=i;
if(!check_cross(n)){
if(n==MAX-1) show_result();/* 找到其中一种放法了...印出结果 */
else put_chess(n+1);
}
}
}

void main()
{
clrscr();
puts("The possible placements are:");
put_chess(0);
puts("\n Press any key to quit...");
getch();
return;
}


到底是哪些奇葩老师布置的作业?
求采纳为满意回答。