JonsenElizee

Software Developing Blog

"An idea is fragile . It can be killed by a scornful smile or a yawn .It can be mound down by irony and scared to death by a cold look."
"Most cultures throughout human history have not liked creative individuals .They ignore them or kill them.It is a very efficient way of stopping creativity."

------Advertising boss Charles Browe and Howard Gardner ,professor at Harvard

   :: 首页 :: 新随笔 ::  ::  :: 管理 ::
Here is my simple implementation for maze issue.

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <stdext.h>
 4 #include <stdbool.h>
 5 #define ROW_NUM 8
 6 #define COL_NUM 8
 7 
 8 typedef struct {
 9     int x;
10     int y;
11     struct position* next;
12 } position;
13 
14 static int maze[ROW_NUM][COL_NUM] = {{0,0,1,0,0,0,0,1}, 
15                                  {1,1,0,1,1,0,1,0}, 
16                                  {0,1,0,1,1,0,1,0}, 
17                                  {0,1,0,1,0,1,0,1}, 
18                                  {0,1,1,0,1,1,1,1}, 
19                                  {0,0,0,1,1,0,0,1}, 
20                                  {1,1,0,1,0,1,1,0}, 
21                      {0,0,1,0,1,1,0,0}};
22 
23 bool isvalid(int x, int y)
24 {
25     if(x >= 0 && x < ROW_NUM && y >= 0 && y < COL_NUM && maze[x][y] == 0return true;
26     return false;
27 }
28 
29 bool inpath(int x, int y, position* pos)
30 {
31     while(pos != NULL) {
32         if(pos->== x && pos->== y) return true;
33         pos = (position*)(pos->next);
34     }
35     return false;
36 }
37 
38 
39 static bool pathfound = false;
40 
41 void walkmaze(int x, int y, position* pos)
42 {
43     if(pathfound || !isvalid(x, y) || inpath(x, y, pos)) return;
44     if(x == ROW_NUM-1 && y == COL_NUM-1) {
45         printf("(%d,%d)", x, y);
46         while(pos != NULL) {
47             printf(" <- (%d,%d)", pos->x, pos->y);
48             pos = (position*)pos->next;
49         }
50         puts(""); pathfound = truereturn;
51     }
52     position pos6; pos6.x = x, pos6.y = y; pos6.next = pos; walkmaze(x+1, y+1&pos6);
53     position pos8; pos8.x = x, pos8.y = y; pos8.next = pos; walkmaze(x  , y+1&pos8);
54     position pos5; pos5.x = x, pos5.y = y; pos5.next = pos; walkmaze(x+1, y  , &pos5);
55     position pos1; pos1.x = x, pos1.y = y; pos1.next = pos; walkmaze(x-1, y+1&pos1);
56     position pos2; pos2.x = x, pos2.y = y; pos2.next = pos; walkmaze(x-1, y  , &pos2);
57     position pos4; pos4.x = x, pos4.y = y; pos4.next = pos; walkmaze(x+1, y-1&pos4);
58     position pos7; pos7.x = x, pos7.y = y; pos7.next = pos; walkmaze(x  , y-1&pos7);
59     position pos3; pos3.x = x, pos3.y = y; pos3.next = pos; walkmaze(x-1, y-1&pos3);
60 }
61 
62 int main()
63 {
64     walkmaze(00, NULL);
65     return 0;
66 }
67 

posted on 2010-10-09 23:21 JonsenElizee 阅读(159) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


By JonsenElizee