Description

度度熊是一只喜欢探险的熊,一次偶然落进了一个m*n矩阵的迷宫,该迷宫只能从矩阵左上角第一个方格开始走,只有走到右上角的第一个格子才算走出迷宫,每一次只能走一格,且只能向上向下向右走以前没有走过的格子,每一个格子中都有一些金币(或正或负,有可能遇到强盗拦路抢劫, 度度熊身上金币可以为负,需要给强盗写欠条),度度熊刚开始时身上金币数为0,问度度熊走出迷宫时候身上最多有多少金币?

Input

输入的第一行是一个整数T(T < 200),表示共有T组数据。

每组数据的第一行输入两个正整数m,n(m<=100,n<=100)。接下来的m行,每行n个整数,分别代表相应格子中能得到金币的数量,每个整数都大于等于-100且小于等于100。

Output

对于每组数据,首先需要输出单独一行”Case #?:”,其中问号处应填入当前的数据组数,组数从1开始计算。

每组测试数据输出一行,输出一个整数,代表根据最优的打法,你走到右上角时可以获得的最大金币数目。

Sample Input

2
3 4
1 -1 1 0
2 -2 4 2
3 5 1 -90
2 2
1 1
1 1

Sample Output

Case #1:
18
Case #2:
4 非常简单的dp,首先分析状态,第一列的状态是确定的,只能从上一气走到下。那么从第二列往后呢?
不难发现,第二列往后的位置ans[i][j]的值有3种情况,从左,下,上三个方向分别到达该点。我们在这里定义两个dp[i][j]一个来保存从上走到下,另一个保存从下走到上的最大值,
在这两个dp中分别更新从前一列走还是从上(或下)最优,然后取个max就行了!
代码如下:
 #include <bits/stdc++.h>

 using namespace std;
int t,n,m,mapp[][],dp1[][],dp2[][],ans[][];
int main()
{
//freopen("de.txt","r",stdin);
scanf("%d",&t);
int casee=;
while (t--)
{ scanf("%d%d",&n,&m);
printf("Case #%d:\n",++casee);
for (int i=;i<=n;++i)
{
for (int j=;j<=m;++j)
scanf("%d",&mapp[i][j]);
}
ans[][]=mapp[][];
for (int i=;i<=n;++i)
ans[i][]=ans[i-][]+mapp[i][];
for (int j=;j<=m;++j)
{
dp1[][j]=ans[][j-]+mapp[][j];
for (int i=;i<=n;++i)
dp1[i][j]=max(dp1[i-][j],ans[i][j-])+mapp[i][j];
dp2[n][j]=ans[n][j-]+mapp[n][j];
for (int i=n-;i>=;--i)
dp2[i][j]=max(dp2[i+][j],ans[i][j-])+mapp[i][j];
for (int i=;i<=n;++i)
ans[i][j]=max(dp1[i][j],dp2[i][j]);
}
printf("%d\n",ans[][m]);
/*
for (int i=1;i<=n;++i)
{
for (int j=1;j<=m;++j)
printf("%d ",ans[i][j]);
printf("\n");
}*/
}
return ;
}
 

最新文章

  1. 第一次用golang写个小程序
  2. SMARTFORM报表程序设计(2)
  3. EF——继承映射关系TPH、TPT和TPC的讲解以及一些具体的例子 05 (转)
  4. Asp.Net多线程用法1
  5. [topcoder]FlowerGarden
  6. MVC创建通用DropdownList
  7. js定义类或对象
  8. springboot thymeleaf和shiro标签整合
  9. decode
  10. 在C#中GUID生成的四种格式
  11. makefile笔记8 - make的运行
  12. 1004 Counting Leaves 对于树的存储方式的回顾
  13. 关于 js tofixed()保留小数位数问题
  14. MySql之删除操作
  15. Page7:能控性、能观性及其判据和对偶原理(2)[Linear System Theory]
  16. shell脚本实例-shell 分析系统瓶颈脚本
  17. 【usaco 2006 feb gold】 牛棚安排
  18. mybatis中事务简单使用
  19. Python:SQLMap的工作流程
  20. android bluetooth

热门文章

  1. HttpClient之EntityUtils工具类
  2. 2019 GNTC 阿里云参会分享:开放、弹性的阿里云网络NFV平台
  3. IOC(控制反转)和DI(依赖注入)
  4. spring-boot整合Cxf的webservice案例
  5. 前端每日实战:24# 视频演示如何用纯 CSS 创作出平滑的层叠海浪特效
  6. LightOJ 1418 Trees on My Island (Pick定理)
  7. 关于toString()的一些事情
  8. 利用单臂路由实现VLAN间路由(有1个疑问)
  9. Java - 集合框架完全解析
  10. 三、python之文件的处理