京東2016研發工程師筆試題【年終獎】

題目:

小東所在公司要發年終獎,而小東恰好獲得了最高福利,他要在公司年會上參與一個抽獎遊戲,遊戲在一個6*6的棋盤上進行,上面放着36個價值不等的禮物,每個小的棋盤上面放置着一個禮物,他需要從左上角開始遊戲,每次只能向下或者向右移動一步,到達右下角停止,一路上的格子裏的禮物小東都能拿到,請設計一個算法使小東拿到價值最高的禮物。

給定一個6*6的矩陣board,其中每個元素爲對應格子的禮物價值,左上角爲[0,0],請返回能獲得的最大價值,保證每個禮物價值大於100小於1000。


思路:

動態規劃問題,首先定義value[i][j]是棋盤座標的i,j位置的最大財富值,要注意初始狀態的設定value[0][i] = sum(value[0][k]),k = 0...i,value[j][0] =sum(value[k][0]),k = 0...j,之後算完狀態轉移方程,可以根據規則知道value[i][j] = max(value[i-1][j],value[i][j-1]) + value[i][j]。value[i][j]代表棋盤當前座標處的財富值,就可以直接輸出最大的財富值了。

代碼AC:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章