迷宫问题递归算法

 

《迷宫问题递归算法》#include <stdio.h>

《迷宫问题递归算法》#include 

<stdlib.h>

《迷宫问题递归算法》#include 

<iostream.h>

《迷宫问题递归算法》
《迷宫问题递归算法》

#define M 8     

《迷宫问题递归算法》

#define N 11    

《迷宫问题递归算法》
《迷宫问题递归算法》
《迷宫问题递归算法》《迷宫问题递归算法》

/**//* 迷宫maze[M][N]中求从入口maze[x1][y1]到出口maze[x2][y2]的一条路径 */

《迷宫问题递归算法》《迷宫问题递归算法》

/**//* 其中 1<=x1,x2<=M-2 , 1<=y1,y2<=N-2 */

《迷宫问题递归算法》

int mazePath(int* maze[], int* direction[], int x1, int y1, int x2, int
 y2)
《迷宫问题递归算法》《迷宫问题递归算法》

{
《迷宫问题递归算法》    
int
 k,g,h;
《迷宫问题递归算法》    
for (k = 0; k < 4; k++
)
《迷宫问题递归算法》《迷宫问题递归算法》    
{
《迷宫问题递归算法》        g 
= x1 + direction[k][0
];
《迷宫问题递归算法》        h 
= y1 + direction[k][1
];
《迷宫问题递归算法》        
if (g == x2 && h == y2 && maze[g][h] == 0
)
《迷宫问题递归算法》《迷宫问题递归算法》        
{
《迷宫问题递归算法》《迷宫问题递归算法》            
/**//* 找到路径*/

《迷宫问题递归算法》            printf( 
The revers path is:  );
《迷宫问题递归算法》            printf( 
the node is: %d %d
, x2, y2 );
《迷宫问题递归算法》            printf( 
the node is: %d %d
, x1, y1 );
《迷宫问题递归算法》            
return 1
;
《迷宫问题递归算法》        }

《迷宫问题递归算法》        
if( maze[g][h] == 0 )
《迷宫问题递归算法》《迷宫问题递归算法》        
{
《迷宫问题递归算法》            maze[g][h] 
= 2
;
《迷宫问题递归算法》            
if (mazePath(maze, direction, g, h, x2, y2) == 1
)
《迷宫问题递归算法》《迷宫问题递归算法》            
{
《迷宫问题递归算法》《迷宫问题递归算法》                
/**//*如能找到路径*/

《迷宫问题递归算法》                printf( 
the node is: %d %d , x1, y1 );
《迷宫问题递归算法》                
return 1
;
《迷宫问题递归算法》            }

《迷宫问题递归算法》        }

《迷宫问题递归算法》    }

《迷宫问题递归算法》    
return 0;
《迷宫问题递归算法》}


《迷宫问题递归算法》
《迷宫问题递归算法》《迷宫问题递归算法》

int direction[][2= 0,1,1,0,0,1,1,0 }
;
《迷宫问题递归算法》《迷宫问题递归算法》
int maze[][N] = 

{
《迷宫问题递归算法》    
1,1,1,1,1,1,1,1,1,1,1
,
《迷宫问题递归算法》    
1,0,1,0,0,1,1,1,0,0,1
,
《迷宫问题递归算法》    
1,0,0,0,0,0,1,0,0,1,1
,
《迷宫问题递归算法》    
1,0,1,1,1,0,0,0,1,1,1
,
《迷宫问题递归算法》    
1,0,0,0,1,1,1,1,0,1,1
,
《迷宫问题递归算法》    
1,1,0,0,1,0,1,1,0,0,1
,
《迷宫问题递归算法》    
1,1,1,0,0,0,0,0,0,0,1
,
《迷宫问题递归算法》    
1,1,1,1,1,1,1,1,1,1,1

《迷宫问题递归算法》}

;
《迷宫问题递归算法》
《迷宫问题递归算法》
int

 main()
《迷宫问题递归算法》《迷宫问题递归算法》

{
《迷宫问题递归算法》    
int *
m[M] ;        
《迷宫问题递归算法》    
int *d[4
];
《迷宫问题递归算法》    
int
 i;
《迷宫问题递归算法》    
《迷宫问题递归算法》    
for ( i=0; i<M; i++
 )
《迷宫问题递归算法》        m[i] 
=
 maze[i];     
《迷宫问题递归算法》    
for ( i=0; i<4; i++
 )
《迷宫问题递归算法》        d[i] 
=
 direction[i];
《迷宫问题递归算法》
《迷宫问题递归算法》    mazePath( m, d, 
1169
 );
《迷宫问题递归算法》    cout
<<
endl;
《迷宫问题递归算法》
《迷宫问题递归算法》    
for ( i=0 ; i<M ; i++
 )
《迷宫问题递归算法》《迷宫问题递归算法》    
{
《迷宫问题递归算法》        
for ( int j=0 ; j<N ; j++
 )
《迷宫问题递归算法》《迷宫问题递归算法》        
{
《迷宫问题递归算法》            cout
<<m[i][j]<< 
;
《迷宫问题递归算法》        }

《迷宫问题递归算法》        cout
<<endl;
《迷宫问题递归算法》    }

《迷宫问题递归算法》    cout
<<endl;
《迷宫问题递归算法》    
《迷宫问题递归算法》    
return 0
;
《迷宫问题递归算法》}


《迷宫问题递归算法》

    原文作者:递归算法
    原文地址: https://blog.csdn.net/zhouhong0801/article/details/1936040
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞