求救 求出在一个N*N的棋盘上,放直N个不能互相捕捉的国际象棋“皇后”的所有布局

wufeng169 2002-09-08 09:44:14
求出在一个N*N的棋盘上,放直N个不能互相捕捉的国际象棋“皇后”的所有布局

# include <stdio.h>
# include <stdlib.h>
# define MAXN 20
int n,m,good;
int col[MAXN+1],a[MAXN+1];
int b[2*MAXN+1],c[2*MAXN+1];
void main()
{int j;
char awn;
printf("输入n:");scanf("%d",&n);
for(j=0;j<=n;j++)a[j]=1;
for(j=0;j<=2*n;j++)b[j]=c[j]=1;
m=1;col[1]=1;good=1;col[0]=0;
do{
if (good)
if (m==n)
{
printf("列\t行");
for (j=1;j<=n;j++) printf("%3d\t%d\n",j,col[j]);
scanf("%c",&awn);
if (awn=='Q'||awn=='q') exit(0);
while (col[m]==n)
{
m--;
a[col[m]]=b[m+col[m]]=c[n+m-col[m]]=1;
}
col[m]++;
}
else {
a[col[m]]=b[m+col[m]]=c[n+m-col[m]]=0;
col[++m]=1;
}
else {
while (col[m]==n){
m--;
a[col[m]]=b[m+col[m]]=c[n+m-col[m]]=1;
}
col[m]++;
}
good=a[col[m]]&&b[m+col[m]]&&c[n+m-col[m]];
}while (m!=0);
}
...全文
277 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wufeng169 2002-09-08
  • 打赏
  • 举报
回复
奥 请大家给我讲讲,我看不明白
maoxianwang 2002-09-08
  • 打赏
  • 举报
回复
网上查八慌后地龟算法

一大堆
OSNC_17 2002-09-08
  • 打赏
  • 举报
回复
有什么问题吗?

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧