📄 queens8.c
字号:
/*递归实现*/
#include <stdio.h>
static char queen[8][8];
static int a[8];
static int b[15];//主对角线
static int c[15];//从对角线
static int iQueenNum=0;
void qu(int i);//i代表行
int main()
{
int iLine,iColumn;
int l=0,cc=0;
//棋盘初始化
for(iLine=0;iLine<8;iLine++)
{
a[iLine]=0;//列标记初始化,表示无列冲突
for(iColumn=0;iColumn<8;iColumn++)
{
queen[iLine][iColumn]='*';
}
}
for(iLine=0;iLine<15;iLine++)
{
b[iLine]=0;
c[iLine]=0;
}
qu(0);
return 0;
}
void qu(int i)
{
int iColumn;
for(iColumn=0;iColumn<8;iColumn++)
{
if(a[iColumn]==0&&b[i-iColumn+7]==0&&c[i+iColumn]==0)
{
queen[i][iColumn]='@';
a[iColumn]=1;
b[i-iColumn+7]=1;
c[i+iColumn]=1;
if(i<7)
qu(i+1);
else
{
int l,cc;
printf("Solution No.%d:\n",++iQueenNum);
for(l=0;l<8;l++)
{
for(cc=0;cc<8;cc++)
{
printf("%c ",queen[l][cc]);
}
printf("\n");
}
}
queen[i][iColumn]='*';
a[iColumn]=0;
b[i-iColumn+7]=0;
c[i+iColumn]=0;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -