描述
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...