#include<iostream.h>
#include<stdlib.h>
int **a;
int *h;
bool put(int i,int j,int n)
{
int r,s;
for(r=0;r<n;r++)
{
for(s=0;s<n;s++)
{
if(a[i][r]==1||a[s][j]==1){break;}
if( (((r+s)==(i+j)) || ((r-s)==(i-j)) )&&(a[r][s]==1)){break;}
}
if(s!=n)break;//充分说明了在循环体里定义的变量出了循环体就不能用。
}
if(r!=n||s!=n)return false;
else return true;
}
void trial(int i,int n)
{
int j;
if(i>n-1)
{
cout<<"the site of the queen is"<<endl;
for(int p=0;p<n;p++)
{
for(int q=0;q<n;q++)
{
if(a[p][q]==1)cout<<p<<q;
}
cout<<endl;
}
char v;
cout<<"if you want to continue,please put in Y/y"<<endl;
cin>>v;
if(v=='y'||v=='Y')
{
i=i-1;int z=h[i];
a[i][z]=0;
}
else exit(2);
}
else
{
for(j=0;j<n;j++)
{
if(put(i,j,n))
{
a[i][j]=1;h[i]=j;
trial(i+1,n);
}
}
if(j==n)
{
if(i>0)
{
i=i-1;int z=h[i];
a[i][z]=0;
}
else
cout<<"search has been finished!"<<endl;
}//递归也要返回到原状态。。很郁闷,是程序设计的问题??
}
}
void main()
{
int n;
cout<<"please put in the number of the queen"<<endl;
cin>>n;
a=new int*[n];
h=new int[n];
int i=0;
for(int p=0;p<n;p++)
{
a[p]=new int[n];
for(int q=0;q<n;q++)
{a[p][q]=0;}
}
trial(i,n);
}
n-queen.rar_queen
版权申诉
8 浏览量
2022-09-22
18:30:55
上传
评论
收藏 765B RAR 举报
局外狗
- 粉丝: 66
- 资源: 1万+
最新资源
- STC15单片机串口2使用程序例子
- 读取日志的excel生成周报 用python3开发weekplan-master.zip
- python 读取excel数据导入dbimport-data-master.zip
- K折交叉验证BP神经网络,多输入多输出BP神经网络(代码完整,数据齐全)
- B07训练原图.zip
- python-对Excel数据处理做可视化分析.zip
- 人工智能大作业-无人机图像目标检测的python源代码+文档说明.zip
- 基于GoogLeNet实现Cifar-10图像分类项目python源码(高分项目).zip
- 数据库 sql 面试题目及答案解析.docx
- 汽车常见 10 种传感器故障后的表现与解决措施.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈