}
if(g!=NULL)//为0则搜索完成 {
if(g->evalue==0) {
break; } }
Step++;//统计深度 if(Step>Max_Step) {
break; } }
return g; }
/////////初始化一个八数码结构体
Graph *CR_BeginGraph(Graph *The_graph) {
srand((unsigned)time(0)); int M=10;//随机移动步数 int Direct; int i,x,y;
Graph *New_graph;
New_graph=(Graph *)malloc(sizeof(Graph)); for(x=0;x for(y=0;y New_graph->form[x][y]=The_graph->form[x][y]; } } for(i=0;i Direct=rand()%4+1;//产生1-4随机数 //printf(\ New_graph=Move(New_graph, Direct, 0); //Print(New_graph); } New_graph->evalue=0; New_graph->udirect=0; New_graph->parent=NULL; return New_graph; } int main (int argc, const char * argv[]) { // insert code here... /* Graph Begin_graph={ {{2,8,3},{1,6,4},{0,7,5}},0,0,NULL }; Graph Begin_graph={ {{2,8,3},{1,0,4},{7,6,5}},0,0,NULL }; Graph Begin_graph={ {{2,0,1},{4,6,5},{3,7,8}},0,0,NULL }; */ //目标数码组 Graph End_graph={ {{1,2,3},{8,0,4},{7,6,5}},0,0,NULL }; //初始数码组 Graph *Begin_graph; Begin_graph=CR_BeginGraph(&End_graph);//随机产生初始数码组 Evaluate(Begin_graph, &End_graph);//对初始的数码组评价 printf(\初始数码组:\\n\ Print(Begin_graph); printf(\目标数码组:\\n\ Print(&End_graph); Graph *G,*P; int top=-1; //图搜索 G=Search(Begin_graph, &End_graph); //打印 if(G) { //把路径倒序 P=G; //压栈 while(P!=NULL) { top++; St[top]=P; P=P->parent; } printf(\搜索结果>>>>>>>>>>>>>>>>\\n\ //弹栈打印 while(top>-1) { P=St[top]; top--; Print(P); } printf(\完成>>>>>>>>>>>>>>>>>>\\n\ } else { printf(\搜索不到结果,深度为%d\\n\ //设计搜索深度范围主要是防止队列内存越界 } return 0; } 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库人工智能实验报告(3)在线全文阅读。
相关推荐: