-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塊,...