Labyrinth

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 668    Accepted Submission(s): 299

Problem 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。第一列最大直接求出,因为只有一种走法(向下)。然后后面有两种、==向下|| 向上。可推到出状态方程为
dp[i][j] = max(dp[i-1][j],dp[i][j-1]) + a[i][j] (向下)
dp[i][j] = max(dp[i+1][j], dp[i][j-1]) + a[i][j] (向上)
*/
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <cstdlib>
#include <algorithm>
#include <set>
#include <utility> #define INF 0xfffffff
#define max1 110 int a[max1][max1], dp[max1][max1], dp1[max1], dp2[max1]; int max(int a, int b) {
return a>b?a:b;
} int main() {
int t, flag = 1;
scanf("%d",&t);
while (t --) {
memset(a, 0, sizeof(a));
int m, n;
scanf("%d%d",&m, &n);
for (int i = 1; i<=m; i++)
for (int j = 1; j<=n; j++) scanf("%d",&a[i][j]);
memset(dp, 0, sizeof(dp));
for (int i = 2; i<=m; i++) {
a[i][1] = a[i][1] + a[i-1][1];
}
dp1[0] = dp2[0] = dp1[m+1] = dp2[m+1] = -9999999;
for (int j = 2; j<=n; j++) {
//向下
for (int i = 1; i<=m; i++) {
dp1[i] = max(dp1[i-1], a[i][j-1]) + a[i][j];
}
//向上
for (int i = m; i>=1; i--) {
dp2[i] = max(dp2[i+1], a[i][j-1]) + a[i][j];
}
for (int i = 1; i<=m; i++) {
a[i][j] = max(dp1[i], dp2[i]);
}
}
printf("Case #%d:\n%d\n",flag++, a[1][n]);
}
return 0;
}

HDU_4826的更多相关文章

随机推荐

  1. ABP-Module

    [TOC] 什么是Module? Module就是模块化的设计思想.开发人员可以将自定义的功能以模块的形式集成到项目中.具体的功能也可以设计成一个单独的模块 AbpModule AbpModule是所 ...

  2. 将自己的域名代理到Gitpages

    相信有很多程序员都有自己的域名,甚至很多人还有自己的服务器.去年我也买了半年的阿里云,在tomcat里面发war包,相当于一个正式的项目.但是很多前端程序员应该要求很简单,就是能将静态的html发布就 ...

  3. Java I/O---Reader & Writer(字符流)

    1.Reader & Writer 当我们初次看见Reader和Writer类时,可能会以为这是两个用来替代InputStream和OutputStreamt的类,但实际上并非如此. 尽管一些 ...

  4. C++ 头文件系列(iostream)

    1. 简介 这个头文件非常特殊,它只声明了8个常用流对象. 2. 8个对象 2.1 窄字符对象(char) extern istream cin extern ostream cout extern ...

  5. jQueryUI Autocomplete插件使用入门教程(最新版)---------转载

    前言: jQuery,无需多作介绍,相信各位读者都应该接触或使用过了.jQuery UI,简而言之,它是一个基于jQuery的前端UI框架.我们可以使用jQuery + jQuery UI非常简单方便 ...

  6. tp3.2 事务处理

    事务的机制通常被概括为“ACID”原则即原子性(A).稳定性(C).隔离性(I)和持久性(D).  原子性:构成事务的的所有操作必须是一个逻辑单元,要么全部执行,要么全部不执行.  稳定性:数据库在事 ...

  7. windows 命令行打开浏览器

    在命令行打开百度 start chrome www.baidu.com

  8. ogg12-ERROR OGG-01031 file D:\OGG\dirdat\ed000000 is not in any allowed output directories

    配置ogg时出现这个错误: 2018-01-04 14:22:58 ERROR OGG-01031 Oracle GoldenGate Capture for Oracle, P147148.prm: ...

  9. Webpack 2 视频教程 008 - WDS 端口号等配置相关

    原文发表于我的技术博客 这是我免费发布的高质量超清「Webpack 2 视频教程」. Webpack 作为目前前端开发必备的框架,Webpack 发布了 2.0 版本,此视频就是基于 2.0 的版本讲 ...

  10. bootstrap 导航栏鼠标悬停显示下拉菜单

    在jsp中加入一下代码: .navbar .nav > li:hover .dropdown-menu { display: block;} 全部代码如下所示: <%@ page lang ...