Dfs 二分搜尋 台州4310 走迷宮

2021-07-10 15:57:25 字數 1436 閱讀 7650

描述

dr.kong

設計的機械人卡多非常愛玩,它常常偷偷跑出實驗室,在某個遊樂場玩之不疲。這天卡多又跑出來了,在

sjtl

遊樂場玩個不停,坐完碰碰車,又

玩滑滑梯,這時卡多又走入乙個迷宮。整個迷宮是用乙個

n * n

的方陣給出,方陣中單元格中填充了乙個整數,表示走到這個位置的難度。這個迷宮可以向上走,向下走,向右走,向左走,但是不能穿越對角線。走迷宮的取勝

規則很有意思,看誰能更快地找到一條路徑,其路徑上單元格最大難度值與最小難度值之差是最小的。當然了,或許這樣的路徑不是最短路徑。

機械人卡多現在在迷宮的左上角(第一行,第一列)而出口在迷宮的右下角(第

n行,第

n列)。卡多很聰明,很快就找到了這樣的一條路徑。你能找到嗎?

輸入

第一行:

n    

表示迷宮是

n*n方陣

(2≤ n≤ 100)

接下來有n行,

每一行包含

n個整數,用來表示每個單元格中難度

(0≤任意難度

≤120)

輸出

輸出為乙個整數,表示路徑上最高難度與和最低難度的差。

樣例輸入

51 1 3 6 8

1 2 2 5 5

4 4 0 3 3

8 0 2 3 4

4 3 0 2 1

樣例輸出

2

提示

樣例中機械人卡多選擇的路徑為:

1->1->2->2->0->2->0->2->1

**如下:

#include

#include

int a[4][2]=

,,,};

int map[110][110];

int vis[110][110];

int l,r,n,flag;

void dfs(int x,int y)

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

int check(int m)

return 0;

}int binary(int low,int high)

return high;

}int main()

}printf("%d\n",binary(0,120));

return 0;

}這道題具體的操作方式為:

先在難度差為0~60的範圍裡找出是否存在一條從起點到終點的一條路徑,如果存在,那就從難度差為0~60的範圍裡再進行二分;否則就從難度差為60~120的範圍裡進行二分。直到找到最終的難度差為止。

NYOJ306 走迷宮 dfs 二分搜尋

dr.kong設計的機械人卡多非常愛玩,它常常偷偷跑出實驗室,在某個遊樂場玩之不疲。這天卡多又跑出來了,在sjtl遊樂場玩個不停,坐完碰碰車,又玩滑滑梯,這時卡多又走入乙個迷宮。整個迷宮是用乙個n n的方陣給出,方陣中單元格中填充了乙個整數,表示走到這個位置的難度。這個迷宮可以向上走,向下走,向右走...

ZZULIOJ 1458 走迷宮(二分,dfs)

題目描述 dr.kong設計的機械人卡多非常愛玩,它常常偷偷跑出實驗室,在某個遊樂場玩之不疲。這天卡多又跑出來了,在sjtl遊樂場玩個不停,坐完碰碰車,又玩滑滑梯,這時卡多又走入乙個迷宮。整個迷宮是用乙個n n的方陣給出,方陣中單元格中填充了乙個整數,表示走到這個位置的難度。這個迷宮可以向上走,向下...

nyoj306 dfs 二分搜尋

題目大意 中文題。演算法思路 這種思路確實對我來說很新穎,我也是看了解題報告才知道。說白了,二分最小值和最大值的差,如果這個差值能夠從起點走到終點,則說明這個差值是可行的,那我們就在減小,二分左半部分,否則二分右半部分。include include includeusing namespace s...