移動time limit: 1000 ms
memory limit: 65536 k
total submit: 1375(370 users)
total accepted: 531(350 users)
rating:
special judge: no
description
在平面座標系內,有兩個座標軸x軸和y軸。(x,y)表示點的座標。
有一點處於(x1,y1)位置上,他可以向相臨8個位置移動(移動方式見下圖)。
劃定範圍:此點只可以在[0<=x<=300,0<=y<=300]範圍內移動。
要求:給出起始位置(x1,y1)和目標位置(x2,y2),要求同學求出從起始位置移動到目標位置所需的最少次數。
input
輸入包括多組測試用例。
對於每組測試用例,包含4個正整數,x1,y1,x2,y2,範圍均為[0,300]。
output
輸出移動所需的最少次數。
sample input
0 0 1 2
0 0 2 1
sample output
hint
寬度優先搜尋
author
盧俊達解題思路:放眼望去,本題適用於廣度優先搜尋。廣度優先搜尋,最好用佇列實現。由於它涉及到點的座標問題,所以推薦使用結構體來描述這個點。我們用x[9],,y[9]來表示它的八個方向,每遍歷一遍,都等於其上一次遍歷的步數加一。
題解:
#include///該標頭檔案為萬能標頭檔案,有些學校oj不能使用,讀者可根據需要自行修改
using namespace std;
const int maxn=305;
int vis[maxn][maxn];
int x[9]=;
int y[9]=;
struct point
;queueq;
point xy(int x,int y)
int bfs(point a,point b)
else}}
}}int main()
int ans=bfs(a,b);
printf("%d\n",ans-1);///ans-1是因為在上面的模組裡把(0,0)點的步數記為了1.
}return 0;
}
BFS廣度優先搜素
bfs相對於dfs來說,並不是一條路走到黑,不撞南牆不回頭,而是對於每一層的所有情況都遍歷一次才進入下一層。也就是說bfs更側重於每一層的可能性,而不是每個選擇的可能性。對於二叉樹的遍歷來說,遍歷完一層才會進入下一層。c 中實現方法往往是使用乙個佇列,先將起點元素push進去,然後再去遍歷該元素的子...
hrbust 1174泉水(DFS深度優先搜尋)
搜尋入門題 include dfs深度優先搜尋 include int vis 1056 1012 標記陣列 int high 1007 1024 座標高度,陣列下標代表座標位置,儲存的是座標的高度 int walkx 4 行走的路線,一維陣列儲存x的移動方式 int walky 4 行走的路線,一...
深度優先遍歷 遞迴 深度優先搜尋和廣度優先搜尋
對於搜尋來說,我們絕大多數情況下處理的都是叫 所謂的暴力搜尋 或者是說比較簡單樸素的搜尋,也就是說你在搜尋的時候沒有任何所謂的智慧型的情況在裡面考慮,很多情況下它做的一件事情就是把所有的結點全部遍歷一次,然後找到你要的結果。基於這樣的乙個資料結構,如果這個資料結構本身是沒有任何特點的,也就是說是乙個...