资源描述:
《迷宫问题的C++算法实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、#ifndefMMIGONG_H#defineMMIGONG_H#defineMAX_SIZE100#includeusingnamespacestd;structNode{intx;inty;intdi;};classStack{private:intrrow;intccolm;inttop;intcount;intminlenght;Nodestack[MAX_SIZE];Nodesstack[MAX_SIZE];public:Stack();//初始化//int**InsortMiGong();//输入迷宫(即一个二
2、维数组)voidFindPath(intab[][10]);//找出迷宫的出路};Stack::Stack()//初始化{rrow=0;ccolm=0;top=-1;count=1;minlenght=MAX_SIZE;}/*int**Stack::InsortMiGong()//输入迷宫(即一个二维数组){introw=1,colm=1;while(true){cout<<"请输入迷宫的行数和列数:";cin>>row>>colm;if(row<=0
3、
4、colm<=0){cout<<"输入错误!请重新输入:"<5、ccolm=colm;continue;}else{rrow=row;ccolm=colm;break;}}int*mg[];cout<<"请输入迷宫矩阵(只有0和1两个数构成):";for(inti=0;i>mg[i][j];returnmg;}*/voidStack::FindPath(intab[][10])//找出迷宫的出路{inta,b,di,find,k;top++;stack[top].x=1;stack[top].y=1;stack[top].di=-1;a
6、b[1][1]=-1;while(top>-1){a=stack[top].x;b=stack[top].y;di=stack[top].di;if(a==8&&b==8){cout<7、;minlenght=top+1;}ab[stack[top].x][stack[top].y]=0;top--;a=stack[top].x;b=stack[top].y;di=stack[top].di;}find=0;while(di<8&&!find){di++;switch(di){case0:a=stack[top].x-1;b=stack[top].y;break;case1:a=stack[top].x;b=stack[top].y+1;break;case2:a=stack[top].x+1;b=stack[top].y;b
8、reak;case3:a=stack[top].x;b=stack[top].y-1;break;}if(ab[a][b]==0)find=1;}if(find==1){stack[top].di=di;top++;stack[top].x=a;stack[top].y=b;stack[top].di=-1;ab[a][b]=-1;}else{ab[stack[top].x][stack[top].y]=0;top--;}}cout<9、t<";if(!((k+1)%10))cout<10、1,0,0,1,0,0,0,1,0,1,},{1,0,0,0,0,1,1,0,0,1,},{1,0,1,1,1,0,0,0,0,1,},{1,0,0,0,1,0,0