c 廣搜練習 營救

2021-08-22 07:05:26 字數 785 閱讀 3689

鐵塔尼號遇險了!他發出了求救訊號。距離最近的哥倫比亞號收到了訊息,時間就是生命,必須盡快趕到那裡。

通過偵測,哥倫比亞號獲取了一張海洋圖。這張圖將海洋部分分化成n*n個比較小的單位,其中用1標明的是陸地,用0標明是海洋。船隻能從乙個格仔,移到相鄰的四個格仔。

為了盡快趕到出事地點,哥倫比亞號最少需要走多遠的距離。

第一行為n,下面是乙個n*n的0、1矩陣,表示海洋地圖

最後一行為四個小於n的整數,分別表示哥倫比亞號和鐵塔尼號的位置。

輸出哥倫比亞號到鐵塔尼號的最短距離,答案精確到整數。

3

001101

1001 1 3 3

4

n<=1000

#include#include#includeusing namespace std;

int mov[4][2]=;

int x1,y1,x2,y2,n;

int dz[1005][1005];

struct point;

void bfs(int x,int y)

for(int i=0;i<4;i++)}}

}int main()

scanf("%d%d%d%d",&x1,&y1,&x2,&y2);

dz[x1][y1]=1;

if(x1==x2&&y1==y2)

printf("0\n");

else

bfs(x1,y1);

return 0;

}

C 演算法 廣搜

有乙個同學推薦我寫一下廣搜,廣搜在最短路 騙分 上確實也有突出貢獻,普及組應該也會考到,我今天就給要考普及組的同學講講課,今天講廣搜。廣搜,把可以走到的地點存進佇列,然後乙個個走,所以他第一次走到乙個點時的步數,一定是開始位置和這個點的最短步數,因為他會把所有路徑都加進去,所以第一次碰到的一定是最短...

YbtOJ練習 廣搜 2 射擊問題

這道題的難點在於如何判斷在某個時刻巨龍能否打中獵物,如果每一次巨龍走完都要check一次效率太低,而注意到獵物是不動的,我們可以初始化出能打中獵物的點,只要巨龍移動到這些位置,就完成搜尋。include define x first define y second using namespace s...

廣搜和深搜

一般來說,廣搜常用於找單一的最短路線,或者是規模小的路徑搜尋,它的特點是 搜到就是最優解 而深搜用於找多個解或者是 步數 已知 好比3步就必需達到前提 的標題,它的空間效率高,然則找到的不必定是最優解,必需記實並完成全數搜尋,故一般情況下,深搜需要很是高效的剪枝 優化 像搜尋最短路徑這些的很顯著若是...