8636 跳格子(dfs+记忆化搜索)
生活随笔
收集整理的這篇文章主要介紹了
8636 跳格子(dfs+记忆化搜索)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
8636?跳格子
該題有題解
時間限制:2457MS? 內存限制:1000K
提交次數:139 通過次數:46
題型: 編程題???語言: G++;GCC
?
Description
地上有一個n*m 的數字格子,每個格子有一個坐標(i,j)(其中1<=i<=n , 1<=j<=m),規定左上角為(0,0), 右下角為(n,m),你要從最左端的一列的任意位置開始跳到最右邊格子外。 下面兩條你跳的時候的約束規則: 一、因為你的力氣有限,每次只能跳一定的距離。給定一個k 為你的彈跳力,則從(i1,j1)起跳,你能跳到 任意(i2,j2)且符合k>=(i1-i2)*(i1-i2)+( j1-j2)*( j1-j2)。 二、每次你至少要向右走一格,也就是說你不能跳到同一列的格子上戒者往回跳。再換句話說就是依次跳 到的位置的坐標中,j 必須是遞增的。 每個格子里邊有一個分值,當你跳到那里就可以獲取到該格子的分數。 現在請你求出你最多能得多少分? 現在假設有一個5×6 的格子,你的彈跳能力為4,則如圖所示你能得到17 分。 跳躍路徑為(4,1)->(3,2)->(3,4)->(4,5)->(4,6)->跳出格子。輸入格式
第一行包含一個整數T,表示T 個case。 每個case 第一行包含n m k 三個整數(1<=n,m,k<=100) 接下來n行,每行m個分值,格子里的分數的絕對值小于20000輸出格式
輸出最大得分。?
輸入樣例
1 5 6 4 1 2 -1 2 1 1 2 3 -1 2 3 1 3 4 -1 2 2 3 4 2 -1 1 3 4 3 1 -1 1 1 4?
輸出樣例
17?
題解
記憶化搜索。每次從第i行第一個開始深搜,記錄下搜過的點,下次如果再次搜到這個點就直接返回這個點的值就行了。
(ps:這題很多細節要注意,盡量少點一些沒必要的判斷,不然很容易超時)
?
轉載于:https://www.cnblogs.com/scaugsh/p/5539392.html
總結
以上是生活随笔為你收集整理的8636 跳格子(dfs+记忆化搜索)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 6-6-2:STL之map和set——m
- 下一篇: 3-3:类与对象中篇——默认成员函数之构