
×¢£ºÆäÖÐM£¬N·Ö±ð±íʾÃÔ¹¬×î´óÐС¢ÁÐÊý£¬±¾³ÌÐòM¡¢NµÄȱʡֵΪ39¡¢39£¬µ±È»£¬Óû§Ò²¿É¸ù¾ÝÐèÒª£¬µ÷ÕûÆä´óС¡£ 3.ÃÔ¹¬Â·¾¶µÄËÑË÷£º
Ê×ÏÈ´ÓÃÔ¹¬µÄÈë¿Ú¿ªÊ¼£¬Èç¹û¸ÃλÖþÍÊÇÃÔ¹¬³ö¿Ú£¬ÔòÒѾÕÒµ½ÁËÒ»Ìõ·¾¶£¬ËÑË÷¹¤×÷½áÊø¡£·ñÔòËÑË÷ÆäÉÏ¡¢Ï¡¢×ó¡¢ÓÒλÖÃÊÇ·ñÊÇÕϰ£¬Èô²»ÊÇÕϰ£¬¾ÍÒÆ¶¯µ½¸ÃλÖã¬È»ºóÔÙ´Ó¸ÃλÖÿªÊ¼ËÑË÷ͨÍù³ö¿ÚµÄ·¾¶£»ÈôÊÇÕϰ¾ÍÑ¡ÔñÁíÒ»¸öÏàÁÚµÄλÖ㬲¢´ÓËü¿ªÊ¼ËÑË÷·¾¶¡£Îª·ÀÖ¹ËÑË÷ÖØ¸´³öÏÖ£¬Ôò½«ÒÑËÑË÷¹ýµÄλÖñê¼ÇΪ2£¬Í¬Ê±±£ÁôËÑË÷ºÛ¼££¬ÔÚ¿¼ÂǽøÈëÏÂÒ»¸öλÖÃËÑË÷֮ǰ£¬½«µ±Ç°Î»Öñ£´æÔÚÒ»¸ö¶ÓÁÐÖУ¬Èç¹ûËùÓÐÏàÁڵķÇÕϰλÖþù±»ËÑË÷¹ý£¬ÇÒδÕÒµ½Í¨Íù³ö¿ÚµÄ·¾¶£¬Ôò±íÃ÷²»´æÔÚ´ÓÈë¿Úµ½³ö¿ÚµÄ·¾¶¡£ÕâʵÏÖµÄÊǹã¶ÈÓÅÏȱéÀúµÄËã·¨£¬Èç¹ûÕÒµ½Â·¾¶£¬ÔòΪ×î¶Ì·¾¶¡£
ÒÔ¾ØÕó 0 0 1 0 1 ΪÀý£¬À´Ê¾·¶Ò»ÏÂ
1 0 0 1 0 1 0 0 0 1 0 0 1 0 0
ËÑË÷Ëã·¨Á÷³ÌͼÈçÏÂËùʾ£º
Ê×ÏÈ£¬½«Î»ÖÃ(0,0)(ÐòºÅ0)·ÅÈë¶ÓÁÐÖУ¬Æäǰ½ÚµãΪ¿Õ£¬´ÓËü¿ªÊ¼ËÑË÷£¬Æä±ê¼Ç±äΪ2£¬ÓÉÓÚÆäÖ»ÓÐÒ»¸ö·ÇÕϰλÖã¬ËùÒÔ½ÓÏÂÀ´Òƶ¯µ½(0,1)(ÐòºÅ1)£¬Æäǰ½ÚµãÐòºÅΪ0£¬±ê¼Ç±äΪ2£¬È»ºó´Ó(0,1)ÒÆ¶¯µ½(1,1)(ÐòºÅ2)£¬·ÅÈë¶ÓÁÐÖУ¬Æäǰ½ÚµãÐòºÅΪ1£¬(1,1)´æÔÚ(1£¬2)(ÐòºÅ3)¡¢(2£¬1)(ÐòºÅ4)Á½¸ö¿ÉÒÆ¶¯Î»Öã¬Æäǰ½ÚµãÐòºÅ¾ùΪ2.¶ÔÓÚÿһ¸ö·ÇÕϰλÖã¬ËüµÄÏàÁÚ·ÇÕϰ½Úµã¾ùÈë
¶ÓÁУ¬ÇÒËüÃǵÄǰ½ÚµãÐòºÅ¾ùΪ¸ÃλÖõÄÐòºÅ£¬ËùÒÔÈç¹û´æÔÚ·¾¶£¬Ôò´Ó³ö¿Ú´¦½ÚµãµÄλÖã¬ÄæÐò¾Í¿ÉÒÔÕÒµ½Æä´Ó³ö¿Úµ½Èë¿ÚµÄͨ·¡£
ÈçϱíËùʾ£º
0 1 2 3 4 5 6 7 8 9 10
ÓÉ
´Ë
¿É
ÒÔ¿´
³ö
£¬µÃ
µ½
×î
¶Ì
·
¾¶
£º
(3,4)(3,3)(2,3)(2,2)(1,2)(1,1)(0,1)(0,0)
3 ¸ÅÒªÉè¼Æ
1 .¢Ù¹¹½¨Ò»¸ö¶þάÊý×émaze[M+2][N+2]ÓÃÓÚ´æ´¢ÃÔ¹¬¾ØÕó
¢Ú×Ô¶¯»òÊÖ¶¯Éú³ÉÃÔ¹¬£¬¼´Îª¶þάÊý×émaze[M+2][N+2]¸³Öµ ¢Û¹¹½¨Ò»¸ö¶ÓÁÐÓÃÓÚ´æ´¢ÃÔ¹¬Â·¾¶
¢Ü½¨Á¢ÃÔ¹¬½Úµãstruct point,ÓÃÓÚ´æ´¢ÃÔ¹¬ÖÐÿ¸ö½ÚµãµÄ·ÃÎÊÇé¿ö ¢ÝʵÏÖËÑË÷Ëã·¨ ¢ÞÆÁÄ»ÉÏÏÔʾ²Ù×÷²Ëµ¥ 2.±¾³ÌÐò°üº¬10¸öº¯Êý£º (1)Ö÷º¯Êý main()
(2)ÊÖ¶¯Éú³ÉÃÔ¹¬º¯Êý shoudong_maze() (3)×Ô¶¯Éú³ÉÃÔ¹¬º¯Êý zidong_maze() (4)½«ÃÔ¹¬´òÓ¡³ÉͼÐÎ print_maze()
(5)´òÓ¡ÃÔ¹¬Â·¾¶ (Èô´æÔÚ·¾¶) result_maze() (6)Èë¶Ó enqueue() (7)³ö¶Ó dequeue()
(8)Åж϶ÓÁÐÊÇ·ñΪ¿Õ is_empty() (9)·ÃÎʽڵã visit() (10)ËÑË÷ÃÔ¹¬Â·¾¶ mgpath()
4 ÏêϸÉè¼Æ
ʵÏÖ¸ÅÒªÉè¼ÆÖж¨ÒåµÄËùÓÐÊý¾ÝÀàÐͼ°²Ù×÷µÄα´úÂëËã·¨ 1. ½ÚµãÀàÐͺÍÖ¸ÕëÀàÐÍ
ÃÔ¹¬¾ØÕóÀàÐÍ£ºint maze[M+2][N+2];Ϊ·½±ã²Ù×÷ʹÆäΪȫ¾Ö±äÁ¿ ÃÔ¹¬ÖнڵãÀàÐͼ°¶ÓÁÐÀàÐÍ£ºstruct point{int row,col,predecessor} que[512] 2. ÃÔ¹¬µÄ²Ù×÷
(1)ÊÖ¶¯Éú³ÉÃÔ¹¬
void shoudong_maze(int m,int n) {¶¨Òåi,jΪѻ·±äÁ¿ for(i<=m) for(j<=n)
ÊäÈëmaze[i][j]µÄÖµ
}
(2)×Ô¶¯Éú³ÉÃÔ¹¬
void zidong_maze(int m,int n) {¶¨Òåi,jΪѻ·±äÁ¿ for(i<=m) for(j<=n)
maze[i][j]=rand()%2 //ÓÉÓÚrand()²úÉúµÄËæ»úÊýÊÇ´Ó0µ½RAND_MAX,RAND_MAXÊǶ¨ÒåÔÚstdlib.hÖеÄ,ÆäÖµÖÁÉÙΪ32767),Òª²úÉú´ÓXµ½YµÄÊý,Ö»ÐèÒªÕâÑùд£ºk=rand()%(Y-X+1)+X; }
(3)´òÓ¡ÃÔ¹¬Í¼ÐÎ
void print_maze(int m,int n)
{ÓÃi,jÑ»·±äÁ¿£¬½«maze[i][j]Êä³ö ¡õ¡¢¡ö} (4)´òÓ¡ÃÔ¹¬Â·¾¶
void result_maze(int m,int n)
{ÓÃi,jÑ»·±äÁ¿£¬½«maze[i][j]Êä³ö ¡õ¡¢¡ö¡¢¡î} (5)ËÑË÷ÃÔ¹¬Â·¾¶ ¢ÙÃÔ¹¬ÖжÓÁÐÈë¶Ó²Ù×÷
void enqueue(struct point p) {½«p·ÅÈë¶Ó⣬tail++} ¢ÚÃÔ¹¬ÖжÓÁгö¶Ó²Ù×÷
struct point dequeue(struct point p) {head++,·µ»Øque[head-1]} ¢ÛÅж϶ÓÁÐÊÇ·ñΪ¿Õ int is_empty()
{·µ»Øhead==tailµÄÖµ£¬µ±¶ÓÁÐΪ¿Õʱ£¬·µ»Ø0} ¢Ü·ÃÎÊÃÔ¹¬¾ØÕóÖнڵã
void visit(int row,int col,int maze[41][41])
{½¨Á¢ÐµĶÓÁнڵãvisit_point,½«ÆäÖµ·Ö±ð¸³Îªrow, col,head-1,maze[row][col]=2,±íʾ¸Ã½ÚµãÒÔ±»·ÃÎʹý;µ÷ÓÃenqueue(visit_point),½«¸Ã½ÚµãÈë¶Ó} ¢Ý·¾¶Çó½â
void mgpath(int maze[41][41],int m,int n)
{Ïȶ¨ÒåÈë¿Ú½ÚµãΪstruct point p={0,0,-1},´Ómaze[0][0]¿ªÊ¼·ÃÎÊ¡£Èç¹ûÈë¿Ú´¦¼´ÎªÕϰ£¬Ôò´ËÃÔ¹¬Î޽⣬·µ»Ø0 £¬³ÌÐò½áÊø¡£·ñÔò·ÃÎÊÈë¿Ú½Úµã£¬½«Èë¿Ú½Úµã±ê¼ÇΪ·ÃÎʹýmaze[p.row][p.col]=2,µ÷Óú¯Êýenqueue(p)½«¸Ã½ÚµãÈë¶Ó¡£
Åж϶ÓÁÐÊÇ·ñΪ¿Õ£¬µ±¶ÓÁв»Îª¿Õʱ£¬ÔòÔËÐÐÒÔϲÙ×÷£º { µ÷ÓÃdequeue()º¯Êý£¬½«¶ÓÍ·ÔªËØ·µ»Ø¸øp£¬
Èç¹ûp.row==m-1ÇÒp.col==n-1,¼´µ½´ï³ö¿Ú½Úµã£¬¼´ÕÒµ½ÁË·¾¶£¬½áÊø
Èç¹ûp.col+1<nÇÒmaze[p.row][p.col+1]==0,˵Ã÷δµ½ÃÔ¹¬Óұ߽磬ÇÒÆäÓÒ·½ÓÐͨ·,Ôòvisit(p.row,p.col+1,maze),½«Óұ߽ڵãÈë¶Ó±ê¼ÇÒÑ·ÃÎÊ
Èç¹ûp.row+1<mÇÒmaze[p.row+1][p.col]==0,˵Ã÷δµ½ÃÔ¹¬Ï±߽磬ÇÒÆäÏ·½ÓÐͨ·,Ôòvisit(p.row+1,p.col,maze),½«Ï·½½ÚµãÈë¶Ó±ê¼ÇÒÑ·ÃÎÊ
Èç¹ûp.col-1>0ÇÒmaze[p.row][p.col-1]==0,˵Ã÷δµ½ÃÔ¹¬×ó±ß½ç£¬ÇÒÆä×ó·½ÓÐͨ·,Ôòvisit(p.row,p.col-1,maze),½«×ó·½½ÚµãÈë¶Ó±ê¼ÇÒÑ·ÃÎÊ
Èç¹ûp.row-1>0ÇÒmaze[p.row-1][p.col]==0,˵Ã÷δµ½ÃÔ¹¬Éϱ߽磬ÇÒÆäÉÏ·½ÓÐͨ·,Ôòvisit(p.row,p.col+1,maze),½«ÉÏ·½½ÚµãÈë¶Ó±ê¼ÇÒÑ·ÃÎÊ }
·ÃÎʵ½³ö¿Ú(ÕÒµ½Â·¾¶)¼´p.row==m-1ÇÒp.col==n-1,ÔòÄæÐò½«Â·¾¶±ê¼ÇΪ3¼´maze[p.row][p.col]==3; while(p.predecessor!=-1) {p=queue[p.predecessor]; maze[p.row][p.col]==3;}
×îºó½«Â·¾¶Í¼ÐδòÓ¡³öÀ´¡£
3.²Ëµ¥Ñ¡Ôñ
while(cycle!=(-1))
¡î ÊÖ¶¯Éú³ÉÃÔ¹¬ Çë°´£º1
¡î ×Ô¶¯Éú³ÉÃÔ¹¬ Çë°´£º2 ¡î Í˳ö Çë°´£º3 scanf("%d",&i); switch(i)
{ case 1£ºÇëÊäÈëÐÐÁÐÊý(Èç¹û³¬³öÔ¤É跶ΧÔòÌáÊ¾ÖØÐÂÊäÈë)
shoudong_maze(m,n);
print_maze(m,n); mgpath(maze,m,n);
if(X!=0) result_maze(m,n);
case 2 £ºÇëÊäÈëÐÐÁÐÊý(Èç¹û³¬³öÔ¤É跶ΧÔòÌáÊ¾ÖØÐÂÊäÈë)
zidong_maze(m,n);
print_maze(m,n); mgpath(maze,m,n);
if(X!=0) result_maze(m,n);
°Ù¶ÈËÑË÷¡°77cn¡±»ò¡°Ãâ·Ñ·¶ÎÄÍø¡±¼´¿ÉÕÒµ½±¾Õ¾Ãâ·ÑÔĶÁÈ«²¿·¶ÎÄ¡£Êղر¾Õ¾·½±ãÏ´ÎÔĶÁ£¬Ãâ·Ñ·¶ÎÄÍø£¬Ìṩ¾µäС˵¹«ÎñÔ±¿¼ÊÔÊý¾Ý½á¹¹¿Î³ÌÉè¼ÆÂÛÎÄ Microsoft Word Îĵµ(2)ÔÚÏßÈ«ÎÄÔĶÁ¡£
Ïà¹ØÍÆ¼ö£º
