2728:摘花生(2.6基本算法之动态规划)
2017-09-15 19:59
267 查看
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
#include<iostream> #include<string.h> using namespace std; //http://noi.openjudge.cn/ch0206/2728/ //意思就是每个点只能从它的左边或者上边的路径到达 int t,r,c,a[110][110]; int dp[110][110]; int main(){ cin>>t; while(t--){ memset(dp,0,sizeof(dp)); cin>>r>>c; for(int i=1;i<=r;i++){ for(int j=1;j<=c;j++){ cin>>a[i][j]; } } for(int i=1;i<=r;i++){ for(int j=1;j<=c;j++){ dp[i][j]=max(dp[i-1][j],dp[i][j-1])+a[i][j]; } } cout<<dp[r][c]<<endl; } }
相关文章推荐
- [OpenJudge] 2.6基本算法之动态规划 摘花生
- 【openjudge 9275】[2.6基本算法之动态规划][Usaco2009 Feb]Bullcow(dp)
- 【openjudge 2.6基本算法之动态规划】(合集)
- 2718:移动路线(2.6基本算法之动态规划)
- 2988:计算字符串距离(2.6基本算法之动态规划)
- 2985:数字组合(2.6基本算法之动态规划)
- 1996:登山(2.6基本算法之动态规划)
- 8462:大盗阿福(2.6基本算法之动态规划)
- 3531:判断整除(2.6基本算法之动态规划)
- 2.6基本算法之动态规划 /1808:公共子序列
- 1481:Maximum sum(2.6基本算法之动态规划)
- 7627:鸡蛋的硬度(2.6基本算法之动态规划)
- 2989:糖果(2.6基本算法之动态规划)
- NOI/ 2.6基本算法之动态规划 【7627】鸡蛋的硬度
- NOI2.6基本算法之动态规划 踩方格 分析----标志物的作用
- 1808:公共子序列(2.6基本算法之动态规划)
- 3531:判断整除(2.6基本算法之动态规划)
- 2.6基本算法之动态规划 7624:山区建小学——区间DP
- 算法导论 第四部分——基本数据结构——第15章:动态规划:背包问题
- [算法之动态规划] 基本思想