中易网

关于八皇后递归转化为非递归问题

答案:2  悬赏:60  
解决时间 2021-02-12 05:10
关于八皇后递归转化为非递归问题
最佳答案
给你个用递归与非递归算法解决八皇后的问题的程序把

代码如下:

#include<iostream>
using namespace std;
static int count;
class huanghou
{
private:
int *path;
int p[8];
public:
huanghou();
~huanghou();
bool place(int i,int j,int *path);
void queen(int row,int *path);
void feidigui();
void digui();
};
huanghou::huanghou(){}
huanghou::~huanghou (){}
bool huanghou::place(int i,int j,int *path)
{
int row;
for(row=0;row<i;row++)
{
if(abs(row-i)==abs(path[row]-j))
return false;
if(j==path[row])
return false;
}
return true;
}
void huanghou::queen(int row,int *path)
{
if(row==8)
{
count++;
cout<<"这是 第"<<count<<"种排列方法"<<endl;
for(int i=0;i<8;i++)
{
for(int j=0;j<8;j++)
{
if(path[j]==i) cout<<"O"<<" ";
else cout<<"*"<<" ";
}
cout<<endl;
}
}

else
{
int j;
for(j=0;j<8;j++)
{
if(place(row,j,path))
{
path[row]=j;
queen(row+1,path);
}
}
}
}
void huanghou::feidigui ()
{
int flag;
int t,k,i;
for(int a=1;a<9;a++)
for(int b=1;b<9;b++)
for(int c=1;c<9;c++)
for(int d=1;d<9;d++)
for(int e=1;e<9;e++)
for(int f=1;f<9;f++)
for(int g=1;g<9;g++)
for(int h=1;h<9;h++)
{
p[0]=a;
p[1]=b;
p[2]=c;
p[3]=d;
p[4]=e;
p[5]=f;
p[6]=g;
p[7]=h;
flag=false;
for(i=7;i>0;i--)
{
for(int j=0;j<i;j++)
if(p[i]==p[j])
{
flag=true;
break;
}
if(flag) break;
}
if(!flag)
for( i=7;i>0;i--)
{
for(int j=0;j<i;j++)
{
t=p[i];
k=p[j];
if(k>t)
{
k=10-k;
t=10-t;
}
if(t-i==k-j)
{
flag=true;
break;
}
}
if(flag) break;
}
if(!flag)
{
count++;
cout<<"这是第"<<count<<"种排列方法!"<<endl;
for(int i=1;i<=8;i++)
{
for(int j=0;j<=7;j++)
{
if(p[j]==i) cout<<"O"<<" ";
else cout<<"*"<<" ";
}
cout<<endl;
}
}
}
}
void huanghou::digui()
{
int* path=new int[8];
for(int j=0;j<8;j++)
path[j]=0;
queen(0,path);
}
int main()
{
huanghou h;
cout<<"\t\t\t递归与非递归解决八皇后问题"<<endl;
cout<<endl;
cout<<"\t\t\t请选择递归或者非递归方法"<<endl;
cout<<endl;
cout<<"\t\t\t0代表非递归::1代表递归"<<endl;
cout<<endl;
int i;
cin>>i;
switch(i)
{
case 0: h.feidigui();
break;
case 1: h.digui();
break;
}
return 0;
}
全部回答
oh my god
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
女人外遇只为钱和利益
大家吃饭还要父母为自己夹菜吗,如果父母为自
请问我买了小瑞家阿胶膏与别人的阿娇膏对比发
沈厝在什么地方啊,我要过去处理事情
C++operator用法.
压力就是动力的英文是什么
能体现陶渊明贫困、著文、五柳树方面的诗句,
吃一根油条需要走十一万步才能消化对吗
穿戴劳动保护用品重要性
加油站(沙坡镇国土资源管理所西北)在什么地方
那一摞碗却仿佛故意捣蛋,突然跳起摇摆舞来。(
想知道: 开封市 兰考新大娱乐会所 在哪
医里面是什么字
qq关联号不是一个在线的话另一个不在线也能2g
描写人跑的动作的词
推荐资讯
液压折弯机需维修
酷狗音乐的蝰蛇音效有什么用?蝰蛇音效里哪个
恋爱就象打仗一样,胜败乃兵家常事!不要弃垒
月亮湾宾馆在哪里啊,我有事要去这个地方
意大利球队谁最厉害
谁知道贵州颈椎病外用药酒配方
绥安镇老年人活动中心在哪里啊,我有事要去这
新发朝鲜族乡卫生院地址有知道的么?有点事想
第一题哪些能组成比例
为什么卖Dell的人不让注册Microsoft账户
勐堆乡慈心完小这个地址在什么地方,我要处理
铭波陶瓷地址在哪,我要去那里办事
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?