8皇后问题的解法实例代码
2019/7/10 23:30:37
本文主要是介绍8皇后问题的解法实例代码,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
#include <stdio.h>
#define MAX 200
#define Empty 0
#define Full 1
#define N 8
unsigned char qipan[N][N][N]={MAX};//初始化8张棋盘表示每下一步的
void input(int i);
int count = 0;
int main()
{
input(0);
getchar();
return 0;
}
void input(int i)
{
int x=0,y=0;
int p=0,q=0;
int flag = 0;
//初始化当前棋盘
if(i!=0)
{
for(x=0;x<N;x++)
{
for(y=0;y<N;y++)
{
qipan[i][x][y] = qipan[i-1][x][y];
}
}
}
else
{
for(x=0;x<N;x++)
{
for(y=0;y<N;y++)
{
qipan[i][x][y] = MAX;
}
}
}
//递归结束
if(i==N)
{
count++;
for(x=0;x<N;x++)
{
for(y=0;y<N;y++)
{
printf("%d ",qipan[i-1][x][y]);
}
printf("\n");
}
printf("%d\n",count);
return;
}
for(y=0;y<N;y++)
{
//找到空位
if(qipan[i][i][y]==MAX)
{
//另其为1
qipan[i][i][y] = 1;
//前后左右上下都置为0
for(p=0;p<N;p++)
{
for(q=0;q<N;q++)
{
if(q==y||p==i||(p-i)==(q-y)||(p-i)==(y-q))
if(qipan[i][p][q] == MAX)
qipan[i][p][q] = 0;
}
}
if(flag != -1)
{
//找下一个
input(i+1);
}
//将棋盘变回本层原样
for(p=0;p<N;p++)
{
for(q=0;q<N;q++)
{
if(i!=0)
qipan[i][p][q] = qipan[i-1][p][q];
else
qipan[i][p][q] = MAX;
}
}
flag =0;
}
}
//找不到空位结束
return;
}
这篇关于8皇后问题的解法实例代码的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-29易优CMS安装常见问题汇总-icode9专业技术文章分享
- 2024-06-28易优新手必读安装教程-icode9专业技术文章分享
- 2024-06-28忘记eyoucms后台密码怎么办?-icode9专业技术文章分享
- 2024-06-26终极指南:Scrum中如何设置需求优先级
- 2024-06-26AI大模型企业应用实战(25)-为Langchain Agent添加记忆功能
- 2024-06-26小白家庭 nas 搭建方案-icode9专业技术文章分享
- 2024-06-23AI大模型企业应用实战(14)-langchain的Embedding
- 2024-06-23AI大模型企业应用实战(15)-langchain核心组件
- 2024-06-23AI大模型企业应用实战(16)-langchain核心组件
- 2024-06-23AI 大模型企业应用实战(06)-初识LangChain