象棋盤上的最短路徑問題(C語言)

2021-09-19 19:10:55 字數 832 閱讀 7164

在西洋棋裡,王是最重要的乙個棋子。每一步,王可以往上下左右或者對角線方向移動一步,如下圖所示。

給定兩個格仔 a(r1,c1), b(r2,c2),你的任務是計算出乙個王從 a 到 b 至少需要走多少步。為了避免題目太簡單,我們從棋盤裡拿掉了乙個格仔 c(r3,c3)(abc 保證互不相同),要求王從 a走到 b 的過程中不能進入格仔 c。在本題中,各行從上到下編號為 1~8,各列從左到右編號為1~8。

輸入輸入包含不超過 10000 組資料。每組資料報含 6 個整數 r1, c1, r2, c2, r3, c3 (1<=r1, c1, r2, c2, r3,c3<=8). 三個格仔 a, b, c 保證各不相同。

輸出對於每組資料,輸出測試點編號和最少步數。

樣例輸入

1 1 8 7 5 6

1 1 3 3 2 2樣例輸出case 1: 7

case 2: 3

思路:起點和終點只分兩種情況:1存在對角線關係、2一般關係(不屬於第一種情況都屬於一般關係)。如果可以斜著走,就寫著走,這種方法所走的步數最少。

#include#includeint max(int a,int b)

int main()

else //兩點位置屬於一般關係:

printf("case %d: %d\n",k,step);

}// fclose(stdin);

// fclose(stdout);

return 0;

}

最短路徑C語言

問題描述 現已知有n n 10 個城市m m 30 條路,保證每個城市之間有路,單向到達,每個城市之間的路程不一樣,求任意兩個城市之間的最短路程 樣例輸入 4 81 2 2 1 3 6 1 4 4 2 3 3 3 1 7 3 4 1 4 1 5 4 3 12 樣例輸出 0 2 5 4 9 0 3 4...

問題 C 最短路徑

問題 c 最短路徑 在洛谷上刷最短路的題然後被老師拉回去做演算法筆記上面的題。拿到這道題,先確定所有路徑唯一,然後是無向邊,那麼對於邊權處理,直接賦值為2的k次方就可以了,然後直接跑最短路。這種思路非常暴力,但仔細看題目的資料範圍,k 500,ull你估計都存不下,沒救。有的同學可能會想,反正最後都...

C語言 最短路徑問題(Dijkstra演算法)

優點 適用範圍廣,本 屬於公式型 可隨意更換資料,適合零基礎同學。主要思路 1.用乙個二維陣列存放帶權有向圖的鄰接矩陣 2.基於dijkstra演算法分別申請三個陣列,distance,path,used分別記錄從起點到其餘各點的最短距離,到目標結點路徑上的前乙個結點,到圖中某個結點是否已找到最短路...