迷宮有n行m列的單元格組成(n和m都小於等於50),每個單元格內要麼是空地,要麼是障礙物。找到一條從迷宮的起點通往迷宮內任意一點的最短路徑。
注意:障礙物是不能走的,也不能走到迷宮之外。
#include #include int n, m, p, q,len, min = 99999999;
int a[51][51], book[51][51];
char b[51][3];
void dfs(int x, int y, int step)
, , , };
int tx, ty, k,i,j;
//判斷是否到達目的地
if (x == p&&y == q)}}
} return ;//這裡返回值很重要
} //列舉四種走法
for (k = 0; k <= 3; k++) }
return ;
}int main()
} //讀入起點和終點座標
scanf_s("%d %d %d %d", &startx, &starty, &p, &q);
//從起點開始搜尋
book[startx][starty] = 1;//標記起點已經在路徑中,防止後面重複走
dfs(startx,starty,0);
printf("min = %d\n", min);
for (i = 0; i < len; i++)
printf("\t");
} system("pause");
return 0;
}
執行結果:
深度優先搜尋
部分和問題 給定整數a1,a2 an,判斷是否可以從中選出若干數,使他們的和恰好為k 1 n 20 從a1開始按照順序決定每個數加或不加,在全部n個數都決定後再判斷它們的和是不是k即可。int a max n int n,k 已經從前i項得到了和sum,然後對於i項之後的進行分支 bool dfs ...
深度優先搜尋
深度優先搜尋 中文名深度優先搜尋 外文名depth first search 提出者霍普克洛夫特與羅伯特 塔揚 應用學科計算機 1詳細解釋 事實上,深度優先搜尋屬於圖演算法的一種,英文縮寫為dfs即depth first search.顧名思義其過程簡要來說是對每乙個可能的分支路徑深入到不能再深入為...
深度優先搜尋
深度優先搜尋的優先遍歷深度更大的頂點,所以我們可以借助棧這一資料結構來實現 1 將要訪問的第乙個頂點 v 入棧,然後首先對其進行訪問 2 將頂點 v 出棧,依次將與頂點 v 相鄰且未被訪問的頂點 c 壓入棧中 3 重複第一步操作,直至棧為空。include include include using...