在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
迷宫问题采用递归和非递归两种方法,暂时完成递归方法,后续会补上非递归方法 #include<stdio.h> #include<stdbool.h> bool findPath(int a[][8],int i,int j){//递归找出口 if(i==6&&j==6)//如果找到了目标a[6][6]则返回true return true; if(a[i][j]==0)//若当前路径未被找到,则继续 { a[i][j]=2;//当前走的路径置为2,表示走过 if(findPath(a,i+1,j)||findPath(a,i,j+1)||findPath(a,i-1, j)||findPath(a,i-1,j))//每个方向都判断,依次展开递归,寻找最佳路径 return true;//若选择的路径可以走,则返回true else{//若当前选择的路径不能走 a[i][j]=0;//弹栈并恢复路径,回退到上一次的位置 return false; } } else//未能找到最终点 return false; } void print(int a[][8])//打印当前的二维数组表 { for(int i=0;i<8;i++){ for(int j=0;j<8;j++){ printf("%d ",a[i][j]); } printf("\n"); } } int main(){ int a[8][8]={0}; for(int i=0;i<8;i++)//设置围墙和障碍物 { a[0][i]=1; a[i][0]=1; a[7][i]=1; a[i][7]=1; } a[3][1]=1; a[3][2]=1; print(a); printf("-----------after find path-----------\n"); findPath(a, 1, 1); print(a); }
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论