題目描述
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 的方陣給出,方陣中單元格中填充了乙個整數,表示走到這個位置的難度。這個迷宮可以向上...