主題: 迷宮
查看單個文章
舊 2011-10-11, 09:19 PM   #1
sdds4747
註冊會員
榮譽勳章

勳章總數0
UID - 348987
在線等級: 級別:0 | 在線時長:1小時 | 升級還需:4小時
註冊日期: 2011-10-02
文章: 2
精華: 0
現金: 2 金幣
資產: 2 金幣
預設 迷宮

這一個程式它是怎麼執行的阿
他的每一行 做啥


0 1 0 0 0 1 1 0 0 0 1 1 1 1 1
1 0 0 0 1 1 0 1 1 1 0 0 1 1 1
0 1 1 0 0 0 0 1 1 1 1 0 0 1 1
1 1 0 1 1 1 1 0 1 1 0 1 1 0 0
1 1 0 1 0 0 1 0 1 1 1 1 1 1 1
0 0 1 1 0 1 1 1 0 1 0 0 1 0 1
0 1 1 1 1 0 0 1 1 1 1 1 1 1 1
0 0 1 1 0 1 1 0 1 1 1 1 1 0 1
1 1 0 0 0 1 1 0 1 1 0 0 0 0 0
0 0 1 1 1 1 1 0 0 0 1 1 1 1 0
0 1 0 0 1 1 1 1 1 0 1 1 1 1 0

void path(void)
{/* 輸出迷宮的一個路徑(如果有的話) */
int i, row, col, nextRow, nextCol, dir, found = FALSE; element position;
mark[1][1] = 1; top = 0;
stack[0].row = 1; stack[0].col = 1; stack[0].dir = 1;
while(top > -1 && !found) {
position = pop();
row = position.row; col = position.col;
dir = position.dir;
while (dir < 8 && !found) {
/* 以dir的方向移動 */
nextRow = row + move[dir].vert;
nextCol = col + move[dir].horiz;
if (nextRow == EXIT_ROW && nextCol == EXIT_COL)
found = true;
elseif( !maze[nextRow][nextCol] && !mark[nextRow][nextCol]) {
mark[nextRow][nextCol]=1;
position.row = row; position.col = col;
position.dir = ++dir;
push(position);
row = nextRow; col = nextCol; dir = 0;
}
else ++dir;
}
}
if (found) {
printf("The path is:\n”);
printf(“row col\n”);
for(i = 0; i <= top; i++)
printf(“%2d%5d”,stack[i].row, stack[i].col);
printf(“%2d%5d\n”,row,col);
printf(“%2d%5d\n”,EXIT_ROW,EXIT_COL);
}
else printf(“The maze does not have a path\n”);
sdds4747 目前離線  
送花文章: 0, 收花文章: 0 篇, 收花: 0 次
回覆時引用此帖