nhuanhou.cpp

来自「N皇后问题」· C++ 代码 · 共 65 行

CPP
65
字号
#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 + =
减小字号Ctrl + -
显示快捷键?