📄 nhuanhou.cpp
字号:
#include<stdio.h>
#include <math.h>
#define ERROR 0;
#define OK 1;
int Queen[100];//下标为对应棋盘的列号,数组存放的是放了棋的行号
int m;
//函数一检查放置皇后是否成功,是的话返回1,否则返回0;
int cheak(int i)
{
for(int j=1;j<i;j++)
if(Queen[j]==Queen[i] || abs(i-j)==abs(Queen[i]-Queen[j])) return ERROR;//同行,或同对角线
return OK;
}
//函数二
void find(int i,int n)
{
if(i==1)
{
Queen[i]=1;
find(i+1,n);
}
for(int j=1;j<=n;j++)
{
Queen[i]=j;
if(cheak(i)) find(i+1,n);
}
if(i>n) //出口
{
m=m+1;
printf("第%d个符合要求的摆法:\n",m);
for(int j=1;j<=n;j++)
{
for(int k=1;k<=n;k++)
{
if(Queen[j]==k) printf("Q ");
else printf("* ");
}
printf("\n");
}
//return ;
}
//if(j>n) return ;
}
void main()
{
int n;
printf("Plese input the numer of the Queen:\nN=");
scanf("%d",&n);
m=0;
find(1,n);
printf("一共有%d种摆法\n",m);
if(m==0) printf("NO ANSWER!");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -