鐵塔尼號遇險了!他發出了求救訊號。距離最近的哥倫比亞號收到了訊息,時間就是生命,必須盡快趕到那裡。
通過偵測,哥倫比亞號獲取了一張海洋圖。這張圖將海洋部分分化成n*n個比較小的單位,其中用1標明的是陸地,用0標明是海洋。船隻能從乙個格仔,移到相鄰的四個格仔。
為了盡快趕到出事地點,哥倫比亞號最少需要走多遠的距離。
第一行為n,下面是乙個n*n的0、1矩陣,表示海洋地圖
最後一行為四個小於n的整數,分別表示哥倫比亞號和鐵塔尼號的位置。
輸出哥倫比亞號到鐵塔尼號的最短距離,答案精確到整數。
3001101
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步就必需達到前提 的標題,它的空間效率高,然則找到的不必定是最優解,必需記實並完成全數搜尋,故一般情況下,深搜需要很是高效的剪枝 優化 像搜尋最短路徑這些的很顯著若是...