題意:有樹1 樹2 會掉蘋果,奶牛去撿,只能移動w次,開始的時候在樹1 問最多可以撿多少個蘋果?
思路: dp[i][j]表示i分鐘移動j次撿到蘋果的最大值
例項分析
0,1 1,2...說明 偶數在樹1 奇數在樹2
for (int i = 1; i <= n; i++)
for (int i = 1; i <= n; i++)
for (int j = 0; j <= w; j++)
這裡有個小技巧,不是每次要求輸入1 2 2 之類的資料,我們把它們都-1 然後就可以就比較好看了
解釋一下兩句dp語句
dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - 1]) 表示上一次要麼在樹1 要麼在樹2的情況,但是我只需要它們兩者之間的最大值
解決問題的**:
#include #include#include
using
namespace
std;
int dp[1010][35
];int t[1010
];int
main()
for (int i = 1; i <= n; i++)
for (int j = 0; j <= w; j++)
printf(
"%d\n
", dp[n][w]);
}
poj2385 很好的動態規劃
以前做的 poj2385 dp i j 表示第i分鐘移動j次最多蘋果數 注意初始化不移動時候 呆在第一棵樹下能吃到的蘋果數 第一分鐘可以移動到第二顆樹下吃蘋果 j的值的奇偶性能判斷牛的位置 能吃到的話可能從另一棵樹來,也可能是本身就在這棵樹下 不能吃到的話一定是本身就在這棵樹下 等他後面掉呢 不能吃...
DP,得到最多蘋果, POJ2385
題意 牛在兩棵蘋果樹下收集蘋果,牛只能在這兩棵樹之間走動w次,在t時刻,某棵樹會掉下蘋果。解題報告 dp t w 表示1 t秒內,轉w次能夠獲得的最多蘋果數目 狀態轉移方程 dp t w max dp t 1 w dp t 1 w 1 include include include using na...
poj 2385 來回走接蘋果dp
題意 有兩棵樹,奶牛開始時在樹1下,現在每分鐘兩棵樹中的某一棵會下蘋果,奶牛只可以移動w次。給每分鐘下蘋果的順序,問奶牛最多能拿到多少蘋果。解析 dp i j 表示的是在第i分鐘,移動了w次拿到的最多蘋果。因為奶牛初始在樹1下,所以 dp i 0 dp i 1 0 a i 1 1 0 狀態轉移方程 ...