Ãâ·Ñ×¢²á ²é¿´ÐÂÌû |

Chinaunix

  ƽ̨ ÂÛ̳ ²©¿Í ÎÄ¿â
×î½ü·ÃÎÊ°å¿é ·¢ÐÂÌû
²é¿´: 1631 | »Ø¸´: 0
´òÓ¡ ÉÏÒ»Ö÷Ìâ ÏÂÒ»Ö÷Ìâ

[C] linux Cһվʽѧϰ [¸´ÖÆÁ´½Ó]

ÂÛ̳»ÕÕÂ:
0
Ìøתµ½Ö¸¶¨Â¥²ã
1Â¥ [ÊÕ²Ø(0)] [±¨¸æ]
·¢±íÓÚ 2013-04-21 16:42 |Ö»¿´¸Ã×÷Õß |µ¹Ðòä¯ÀÀ
Õâ±¾ÊéµÄ12.3½Ú£¬Àý×Ó12.3 ÓÃÉî¶ÈÓÅÏÈËÑË÷½âÃÔ¹¬ÎÊÌâ¡£¡£
¸öÈ˾õµÃ²»ÊÇÉî¶ÈÓÅÏÈ°¡£¬¶øÊǹã¶ÈÓÅÏÈѽ¡£¡£ÇëÎÊÊDz»ÊÇ£¿
³ÌÐòÈçÏ£º
  1. #include <stdio.h>

  2. #define MAX_ROW 5
  3. #define MAX_COL 5

  4. struct point {int row, col;} stack[512];
  5. int top = 0;

  6. void push(struct point p) {
  7.         stack[top] = p;
  8.         top++;
  9. }

  10. struct point pop(void) {
  11.         top--;
  12.         return stack[top];
  13. }

  14. int is_empty(void) {
  15.         return top == 0;
  16. }

  17. int maze[MAX_ROW][MAX_COL] = {
  18.         0, 1, 0, 0, 0,
  19.         0, 1, 0, 0, 0,
  20.         0, 0, 0, 0, 0,
  21.         0, 1, 1, 1, 0,
  22.         0, 0, 0, 1, 0,
  23.        
  24. };

  25. void print_maze(void) {
  26.         int i, j;
  27.         for (i = 0; i < MAX_ROW; i++) {
  28.                 for (j = 0; j < MAX_COL; j++) {
  29.                         printf("%d ", maze[i][j]);
  30.                 }
  31.                 putchar('\n');
  32.         }
  33. }

  34. struct point predecessor[MAX_ROW][MAX_COL] = {
  35.         {{-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}},
  36.         {{-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}},
  37.         {{-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}},
  38.         {{-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}},
  39.         {{-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}},
  40. };

  41. void visit(int row, int col, struct point pre) {
  42.         struct point visit_point = {row, col};
  43.         maze[row][col] = 2;
  44.         predecessor[row][col] = pre;
  45.         push(visit_point);
  46. }

  47. int main(void) {
  48.         struct point p = {0, 0};
  49.         maze[p.row][p.col] = 2;
  50.         push(p);

  51.         while(!is_empty()) {
  52.                 p = pop();
  53.                 if (p.row == MAX_ROW - 1 && p.col == MAX_COL - 1) {
  54.                         break;
  55.                 }
  56.                 if (p.row + 1 < MAX_ROW && maze[p.row + 1][p.col] == 0) {
  57.                         visit(p.row + 1, p.col, p);
  58.                 }
  59.                 if (p.col + 1 < MAX_COL && maze[p.row][p.col + 1] == 0) {
  60.                         visit(p.row, p.col + 1, p);
  61.                 }
  62.                 if (p.col - 1 >= 0 && maze[p.row][p.col - 1] == 0) {
  63.                         visit(p.row, p.col - 1, p);
  64.                 }
  65.                 if (p.row - 1 >= 0 && maze[p.row - 1][p.col] == 0) {
  66.                         visit(p.row - 1, p.col, p);
  67.                 }
  68.                 print_maze();
  69.         }

  70.         if (p.row == MAX_ROW - 1 && p.col == MAX_COL - 1) {
  71.                 printf("(%d, %d) \n", p.row, p.col);
  72.                 while (predecessor[p.row][p.col].row != -1) {
  73.                         p = predecessor[p.row][p.col];
  74.                         printf("(%d, %d)\n", p.row, p.col);
  75.                 }
  76.         } else {
  77.                 printf("No path!\n");
  78.         }

  79.         return 0;
  80. }
¸´ÖÆ´úÂë
ÄúÐèÒªµÇ¼ºó²Å¿ÉÒÔ»ØÌû µÇ¼ | ×¢²á

±¾°æ»ý·Ö¹æÔò ·¢±í»Ø¸´

  

±±¾©Ê¢ÍØÓÅѶÐÅÏ¢¼¼ÊõÓÐÏÞ¹«Ë¾. °æȨËùÓÐ ¾©ICP±¸16024965ºÅ-6 ±±¾©Êй«°²¾Öº£µí·Ö¾ÖÍø¼àÖÐÐı¸°¸±àºÅ£º11010802020122 niuxiaotong@pcpop.com 17352615567
δ³ÉÄê¾Ù±¨×¨Çø
Öйú»¥ÁªÍøЭ»á»áÔ±  ÁªÏµÎÒÃÇ£ºhuangweiwei@itpub.net
¸ÐлËùÓйØÐĺÍÖ§³Ö¹ýChinaUnixµÄÅóÓÑÃÇ ×ªÔر¾Õ¾ÄÚÈÝÇë×¢Ã÷Ô­×÷ÕßÃû¼°³ö´¦

Çå³ý Cookies - ChinaUnix - Archiver - WAP - TOP