ZZULIOJ 1458 走迷宮(二分,dfs)

2021-09-19 16:56:48 字數 1290 閱讀 6296

題目描述

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

這個迷宮可以向上走,向下走,向右走,向左走,但是不能穿越對角線。走迷宮的取勝規則很有意思,看誰能更快地找到一條路徑,其路徑上單元格最大難度值與最小難度值之差是最小的。當然了,或許這樣的路徑不是最短路徑。

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

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

輸入第一行:         n     表示迷宮是n*n方陣        (2≤ n≤ 100)

接下來有n行, 每一行包含n個整數,用來表示每個單元格中難度 (0≤任意難度≤120)。

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

樣例輸入 copy

5

1 1 3 6 8

1 2 2 5 5

4 4 0 3 3

8 0 2 3 4

4 3 0 2 1

樣例輸出 copy

2
第四屆河南省大學生程式設計競賽

[提交] [狀態]

二分答案,思路是列舉差值,然後再用搜尋判斷,能否在當前最大最小值下走到終點。

也可以用dijkstra來寫

#includeusing namespace std; //聽說標頭檔案多才強 

int a[110][110];

bool vis[110][110];

int mx, mi, n;

int flag = 0;

int min, max;

int dir[4][2] = ;

void dfs(int x, int y)

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

}return;

}int check(int mid)

return 0;

}int main()

int l = 0, r = mx - mi;

int ans = 0;

while (l <= r)

cout << ans << endl;

} return 0;

}

走迷宮C 版 二

窗體,呼叫.using system using system.drawing using system.collections using system.componentmodel using system.windows.forms using system.data using system...

NYOJ 306 走迷宮 二分 搜尋

題意 從 1,1 點到 n,n 找一條路徑 只能上下左右走 使路徑上最大點與最小點差值最小。思路分析 1 這題和我們以前做的迷宮題差別很大,以前做的一般就是求 最小步數或代價最小,乙個dfs或bfs即可,而此題是求最大點與最小點差。2 分析看出,一次dfs和bfs對我等弱菜來說顯然不可 大牛或許可以...

Dfs 二分搜尋 台州4310 走迷宮

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