DP入門 迷宮行走方案3

2022-05-19 21:17:16 字數 1006 閱讀 1260

題目描述

給你乙個 \(n\) 行 \(m\) 列( \(1 \le n,m \le 100\) )的二維迷宮,一開始你在迷宮的左上角的格仔 \((1,1)\) 處(我們用位置 \((x,y)\) 來表示第 \(x\) 行第 \(y\) 列),你要走到右下角的格仔 \((n,m)\) 處 ,但是你是不能隨便走的,每一步你只能往右移動一格,或者往下移動乙個,並且你不能移動出迷宮的邊界。

迷宮中的每乙個格仔都存放有乙個寶箱,每個寶箱都存放有一定數量的金幣,我們用 \(a_\) 來表示格仔 \((i,j)\) 處存放的金幣的數量( \(0 \le a_ \le 1000\) )。

你走到某個格仔,你就能夠拿到這個格仔中的寶箱中的所有金幣,請問你從迷宮的左上角走到迷宮的右下角能夠獲得的金幣的最大數量是多少?

輸入格式

輸入的第一行包含兩個整數 \(n,m(1 \le n,m \le 10)\) ,以空格分隔。

接下來 \(n\) 行,每行包含兩個 \(m\) 個整數 \(a_(0 \le a_ \le 1000)\) ,以乙個空格分隔,用於表示二維迷宮中每個格仔中的寶箱中存放的金幣的數量。

輸出格式

輸出包含乙個整數,表示從 \((1,1)\) 走到 \((n,m)\) 的所有方案中能夠收穫最多金幣的那種方案對應的金幣數。

樣例輸入

2 2

1 23 1

樣例輸出
5
本題涉及演算法:動態規劃。

我們設狀態 \(f[i][j]\) 表示從 \((1,1)\) 走到 \((i,j)\) 的能夠獲得的最多的金幣數量;

那麼:我們可以按照這個思路遞推得到 \(f[n][m]\) 就是我們的答案。

實現**如下:

#include using namespace std;

const int maxn = 110;

int n, m, a[maxn][maxn], f[maxn][maxn];

int main()

DP入門 迷宮行走方案1

題目描述 給你乙個 n 行 m 列的二維迷宮,一開始你在迷宮的左上角的格仔 1,1 處 我們用位置 x,y 來表示第 x 行第 y 列 你要走到右下角的格仔 n,m 處 但是你是不能隨便走的,每一步你只能往右移動一格,或者往下移動乙個,並且你不能移動出迷宮的邊界,請問你有多少種不同的移動方案。說明 ...

dp迷宮方案數

帕秋莉掌握了一種木屬性魔法 這種魔法可以生成一片森林 類似於迷陣 但一次實驗時,帕秋莉不小心將自己困入了森林 帕秋莉處於地圖的左下角,出口在地圖右上角,她只能夠向上或者向右行走 現在給你森林的地圖,保證可以到達出口,請問有多少種不同的方案 答案對2333取模 第一行兩個整數m n表示森林是m行n列 ...

烹調方案 (DP)

傳送門 一道非常好的dp。看這個可能會覺得與01揹包很像,不過這個的問題在於現做的菜餚會影響到後面的菜餚的價值。我們在進行01揹包dp時,一件物品的價值是不隨著其被列舉的位置改變而改變的,但是這道題中不行。假設你現在有兩種菜餚,你先做第一種會導致第二種的價值受損,反之第一種的價值就會受損,我們並不能...