人工智能题目
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
人工智能上机题目
请从下面四道题中任意选择两道作为上机题目。
一、八数码问题
实验内容要求:
八数码难题:在3
3 的方格棋盘上,分别放置了标有数字1,2,3,
4,5,6,7,8 八张牌,初始状态为S0(可随机初始化),目标状态Sg如图所示,请使用学习到的搜索算法来实现上述问题。
二、传教土与野人问题
实验内容要求:
有三个传教士和三个野人过河,只有一条能装下两个人的船,在河的任何一方或者船上,如果野人的人数大于传教士的人数,那么传教士就会有危险,因此要避免这种情况出现。请应用最新的方法来表达传教士和野人问题,编写一个计算机程序,以求得安全度过全部6个人。
三、汉诺塔问题
实验内容要求:
古代有一个梵塔,塔内有三个座A,B,C,A座上有64个盘子,盘子大小不等,大的在下,小的在上。有一个和尚想把这64个盘子从A座移到B座,但每次只能允许移动一个盘子,并且在移动过程中,3个座上的盘子始终保持大盘在下,小盘在上。在移动过程中可以利用B座,要求打印移动的步骤。
四、八皇后问题
八皇后问题是一个以国际象棋为背景的问题,如何能够在8
8 的
国际象棋盘上放置八个皇后,使得任何一个皇后都无法吃掉其他的皇后?即两个皇后只要不处于同一条线上(横线、纵线,斜线)即可。要求打印所有满足上述条件的状态
注:如果有兴趣可以尝试n皇后问题#include
int count;//全局变量记录总的八皇后解决个数
int main()
{
int queenrow[8]={0};//表示未取位置,结果将相应行数存入列数组
int queendiag[16]={1};//表各对角线
int queenback_diag[16]={1};//表各斜对角线
FindPos(1);
return 0;
}
void FindPos(int i)
{
for(int j=0;j<8;j++)
{
if(!queenrow[j]&&queendiag[i+j]&&queenback_diag[i-j+7])//可以置入的条件为不同行列及双向对角线
{
queenrow[i-1]=j+1;//从零到七取值注意
queendiag[i+j]=0;//该位置不可取
queenback_diag[i-j+7]=0;
if(i<8)
{
FindPos(i+1);
}
else
{
count++;
printf("第%d种解决方案:\n",count);
printf("1 2 3 4 5 6 7 8 ");
for(int z=0;z<8;z++)
{
printf("%d ",queenrow[z]);
}
}//无有效值点,递归返回
queenrow[i-1]=0;
queendiag[i+j]=1;
queenback_diag[i-7+1]=1;
}
}
}