欢迎来到天天文库
浏览记录
ID:38614079
大小:94.50 KB
页数:7页
时间:2019-06-16
《人工智能实验二-八皇后问题》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、【实验名称】人工智能实验二:八皇后问题实验代码:#include#includeusingnamespacestd;intLineNum[9];//第i列的皇后要放的行位置(只用其中的列号1到8)boola[9];//a[i]为1表示第i行上尚未放皇后boolb[15];//b[i]为1表示第i条斜对角线上尚未放皇后(斜对角线指的是"/"状对角线,该对角线上各点的行列号之和i+j为一个常数)boolc[15];//c[i]为1表示第i条反斜对角线上尚未放皇后(反斜对角线指的是""状对角线,该对
2、角线上各点的行列号之差i-j为一个常数)。intcount=0;//计数器,用于计算方法总数classQueen{inti;//成员变量,列号public:Queen(intx)//构造函数{i=x;}voidsolve(int);//成员函数};voidQueen::solve(inti)//成员函数的实现{intj;for(j=1;j<9;j++)//遍历行{if(a[j]&&b[i+j-2]&&c[i-j+7])//用于判断并实现:如果在第j行的第i列上放置皇后安全的话,则将一枚皇后放置到那儿。{LineNum[i]=j;//记
3、录皇后位置a[j]=false;b[i+j-2]=false;c[i-j+7]=false;solve(i+1);//递归调用solvea[j]=true;b[i+j-2]=true;c[i-j+7]=true;}}if(i>8)//摆放皇后之后,若i=8即已放满时则递归出口;否则通过solve(i+1);进行递归调用。{count++;cout<<"第"<4、secout<<"*";}cout<5、ueen.solve(1);//第1列开始的连续8列上均放上皇后cout<<"一共有"<
4、secout<<"*";}cout<5、ueen.solve(1);//第1列开始的连续8列上均放上皇后cout<<"一共有"<
5、ueen.solve(1);//第1列开始的连续8列上均放上皇后cout<<"一共有"<
此文档下载收益归作者所有