HBU 動態規劃 奧馬爾 愛糖果

2021-10-09 04:58:21 字數 1277 閱讀 5229

-4

-2-1-32

3145

奧馬爾想買完乙個子矩陣中的所有糖果,請你程式設計序求出他所能買得的最大的糖果健康值。

輸入格式:

輸入的第一行是單個整數t,測試用例的數量(1≤t≤100)。每個測試用例開始一行包含空格隔開兩個整數n m (1≤n,m≤1000)代表糖果網格的尺寸,緊隨其後的是n行,每乙個包含m個空格隔開整數,代表這一行糖果的健康值。網格中的每個整數將不小於- 2000,也不大於2000。

輸出格式:

對於每個測試用例,列印包含單個整數的一行,該整數表示從非空子矩形中可以獲得的健康值的最大總和。

輸入樣例:

在這裡給出一組輸入。例如:

1

3 3-4 -2 -1

-3 2 3

1 4 5

輸出樣例:

在這裡給出相應的輸出。例如:

思路

-4-2

-1-323

145可以從右下角開始求以其為左上角的子矩陣的值,值最大時取此子矩陣及值;

以i為行 j為列,f[i][j]為子矩陣值,a[i][j]為該格糖果的值,i=末行時,f[i][j]=a[i][j]+f[i+1][j];j==末列時,f[i][j]=a[i][j]+f[i][j+1];否則f[i][j]=f[i][j]時+f[i+1][j]值為f[i + 1][j] + f[i][j + 1] + a[i][j] - f[i + 1][j + 1]。

。。。-2+(-1+3+5)+(3+5+4+5-5)-(3+5)

-1+3+5

。。。2+(3+5)+(3+5)-5

3+51+4+5

4+55

c++**

#include

#include

#include

#include

#pragma gcc optimize (2)

#pragma gcc optimize (3)

using

namespace std;

int a[

1005][

1005

], f[

1005][

1005];

intmain()

sum =

max(sum, f[i]

[t]);}

printf

("%d\n"

, sum);}

return0;

}

糖果動態規劃

由於在維護世界和平的事務中做出巨大貢獻,蒜頭君被贈予糖果公司若干無限量糖果免費優惠券。蒜頭君可以從糖果公司的 nn 件產品中任意選擇若干件帶回家享用。糖果公司的 nn 件產品每件都包含數量不同的糖果。蒜頭君希望他選擇的產品包含的糖果總數是 kk 的整數倍,這樣他才能平均地將糖果分給幫助他維護世界和平...

動態規劃 吃糖果

每天可以吃一塊或者兩塊糖果,給出n塊糖果,問可以有幾種吃法。根據題意,當吃到第n塊糖的時候,可以是吃1塊吃到第n塊,也可以吃2塊。所以當吃到第n塊的時候,他的方法數是吃n 1和n 2塊糖的方法數之和。因此。狀態 a n 是吃第n塊糖的時候的方法數。子問題 第n塊糖,最後是那種方法吃到的。有兩種。狀態...

動態規劃 吃糖果

描述 名名的媽媽從外地出差回來,帶了一盒好吃又精美的巧克力給名名 盒內共有 n 塊巧克力,20 n 0 媽媽告訴名名每天可以吃一塊或者兩塊巧克力。假設名名每天都吃巧克力,問名名共有多少種不同的吃完巧克力的方案。例如 如果n 1,則名名第1天就吃掉它,共有1種方案 如果n 2,則名名可以第1天吃1塊,...