正在加载图片...
递归算法举例——迷宫问题递归算法 void Recurve Seek(int i,j) ∥进入时(i,j)是一通道块,尚未印足迹,不在当前路径上。本函数 ∥从(i,j)起探索并输出以此时当前路径为前缀的所有成功的简单路 径,退出时状态同进入时状态 maze[i][j]=03;∥印足迹,归入当前路径 if(i=n&&j=n) printmaker();∥简单情况 else for(k=0;k<4;k++)∥试探东南西北四个方向 if(maze[i+dk]][j+d[k]]=)∥/若下一块是通道 Recurveseeki(i+di[k],j+dj[k]);/则递归调用 maze[i,j]=;∥回溯,恢复进入时状态 假定入口为(0,0),则只需执行下列函数调用即可找到迷宫的 所有简单路径: RecurveSeek(0, 0) 20212222021/2/22 3 递归算法举例——迷宫问题递归算法 void RecurveSeek ( int i , j ) //进入时( i , j )是一通道块,尚未印足迹,不在当前路径上。本函数 //从 ( i , j ) 起探索并输出以此时当前路径为前缀的所有成功的简单路 //径,退出时状态同进入时状态 { maze[ i ] [ j ] = ‘0’ ; //印足迹,归入当前路径 if ( i == n && j == n ) printmaze( ) ; //简单情况 else for ( k = 0 ; k < 4 ; k ++ ) //试探东南西北四个方向 if ( maze[ i + di[ k ] ] [ j + dj[ k ] ] == ‘ ‘ ) //若下一块是通道 RecurveSeek( i + di[ k ] , j + dj[ k ] ) ; //则递归调用 maze[ i , j ] = ‘ ‘ ; //回溯,恢复进入时状态 } 假定入口为 ( 0 , 0 ) ,则只需执行下列函数调用即可找到迷宫的 所有简单路径: RecurveSeek( 0 , 0 ) ;
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有