1. 程式人生 > >2728:摘花生

2728:摘花生

列數 med 能夠 ems logs itl names title can

2728:摘花生

  • 查看
  • 提交
  • 統計
  • 提問
總時間限制:
1000ms
內存限制:
65536kB
描述
Hello Kitty 想摘點花生送給她喜歡的米老鼠。她來到一片有網格狀道路的矩形花生地(如下圖),從西北角進去,東南角出來。地裏每個道路的交叉點上都有種著一株花生苗,上面有若幹顆花生,經過一株花生苗就能摘走該它上面所有的花生。Hello Kitty只能向東或向南走,不能向西或向北走。問Hello Kitty 最多能夠摘到多少顆花生。
技術分享
輸入
第一行是一個整數T,代表一共有多少組數據。1<=T <= 100
接下來是T組數據。

每組數據的第一行是兩個整數,分別代表花生苗的行數R和列數 C ( 1<= R,C <=100)
每組數據的接下來R行數據,從北向南依次描述每行花生苗的情況。每行數據有 C 個整數,按從西向東的順序描述了該行每株花生苗上的花生數目 M ( 0<= M <= 1000)。
輸出
對每組輸入數據,輸出一行,內容為Hello Kitty能摘到得最多的花生顆數。
樣例輸入
2
2 2
1 1
3 4
2 3
2 3 4
1 6 5
樣例輸出
8
16



#簡單遞推
 1 //*************************************
 2 //7-1   PAx: 620終端
 3 // Name: 2728:摘花生
 4 // Solut:  D.P.
 5 //************************************
 6 //#include "stdafx.h"
 7 #include<bits/stdc++.h>
 8 #define N 101
 9
using namespace std; 10 int t, r, c; 11 int a[N*N][N]; 12 int main() 13 { 14 scanf("%d", &t); 15 while (t--) 16 { 17 memset(a, 0, sizeof(a)); 18 scanf("%d%d", &r, &c); 19 for (int i = 1; i <= r; i++) 20 { 21 for (int j = 1; j <= c; j++)
22 { 23 scanf("%d", &a[i][j]); 24 } 25 } 26 for (int i = r; i >= 1; i--) 27 { 28 for (int j = c; j >= 1; j--) 29 { 30 a[i][j] += max(a[i + 1][j], a[i][j + 1]); 31 } 32 } 33 printf("%d\n", a[1][1]); 34 } 35 return 0; 36 }

2728:摘花生