⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nhuanhou.cpp

📁 N皇后问题
💻 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 + -