华为机试---年终奖(动态规划)
題目描述
小東所在公司要發(fā)年終獎(jiǎng),而小東恰好獲得了最高福利,他要在公司年會(huì)上參與一個(gè)抽獎(jiǎng)游戲,游戲在一個(gè)6*6的棋盤上進(jìn)行,上面放著36個(gè)價(jià)值不等的禮物,每個(gè)小的棋盤上面放置著一個(gè)禮物,他需要從左上角開始游戲,每次只能向下或者向右移動(dòng)一步,到達(dá)右下角停止,一路上的格子里的禮物小東都能拿到,請(qǐng)?jiān)O(shè)計(jì)一個(gè)算法使小東拿到價(jià)值最高的禮物。
給定一個(gè)6*6的矩陣board,其中每個(gè)元素為對(duì)應(yīng)格子的禮物價(jià)值,左上角為[0,0],請(qǐng)返回能獲得的最大價(jià)值,保證每個(gè)禮物價(jià)值大于100小于1000。
import java.util.*;
public class Bonus {
??? public int getMost(int[][] board) {
??????? int[][] value = new int[6][6];
??value[0][0] = board[0][0];
??//先計(jì)算邊界位置的value,移動(dòng)方向只有一個(gè)
??for(int i = 1 ; i < 6 ; i++){
???//計(jì)算第1列6個(gè)位置的value
???value[i][0] = board[i][0] + value[i - 1][0];
???//計(jì)算第1行6個(gè)位置的value
???value[0][i] = board[0][i] + value[0][i - 1];
??}
??//計(jì)算中間位置的value,移動(dòng)方向向右或向下
??for(int i = 1 ; i < 6 ; i++){
???for(int j = 1 ; j < 6 ; j++){
????value[i][j] = board[i][j] + Math.max(value[i - 1][j] , value[i][j - 1]);
???}
??}
??return value[5][5];
??? }
}
總結(jié)
以上是生活随笔為你收集整理的华为机试---年终奖(动态规划)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于提高浏览器渲染页面速度的建议
- 下一篇: 华为机试+一面+终面面经