HDU---Labyrinth
Labyrinth
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1114 Accepted Submission(s): 477
每组数据的第一行输入两个正整数m,n(m<=100,n<=100)。接下来的m行,每行n个整数,分别代表相应格子中能得到金币的数量,每个整数都大于等于-100且小于等于100。
每组测试数据输出一行,输出一个整数,代表根据最优的打法,你走到右上角时可以获得的最大金币数目。
度度熊不能向左走,那么访问第一列只能向下走,用d[i]表示度度熊访问某一列第i(从0始)行时获得的最多金币,同时,用d1[m],d2[m]作为辅助数组,在求第j列([1:n-1])时,首先令d1[0]=d[0]+maze[0][j],d2[m-1]=d[m-1]+maze[m-1][j],然后从上往下扫描,d1[i]={d[i],d1[i-1]}+maze[i][j](1<=i<=n-1),类似地,有d2[i]={d[i],d2[i+1]}+maze[i][j](m-1>i>=0,从下往上),最后d[i]=max{d1[i],d2[i]}(注意,虽然最后一列只需从下往上扫描,但是考虑到代码的整齐性,没有单独处理最后一行)
#include <stdio.h>
#define INF 100000
#define MAX(a,b) a>b?a:b
#define REP(i,x,y) for(int i=x;i<y;i++)
#define REP1(i,x,y) for(int i=x;i>=y;i--) int maze[101][101],d[101],d1[101],d2[101]; void Input(int m,int n){
REP(i,0,m)
REP(j,0,n) scanf("%d",&maze[i][j]);
} void Hunt(int m,int n){
//init
d[0]=maze[0][0];
REP(i,1,m) d[i]=d[i-1]+maze[i][0];
REP(j,1,n){
//从上往下扫描
d1[0]=d[0]+maze[0][j];
REP(i,1,m){
//这两行代码不能合为一句,否则返回的只是MAX的值
d1[i]=MAX(d[i],d1[i-1]);
d1[i]+=maze[i][j];
}
//从下往上扫描
if(m>1){
d2[m-1]=d[m-1]+maze[m-1][j];
REP1(i,m-2,0){
d2[i]=MAX(d[i],d2[i+1]);
d2[i]+=maze[i][j];
}
}
else{
REP(i,0,m) d2[i]=-INF;
}
REP(i,0,m) d[i]=MAX(d1[i],d2[i]);
}
} int main(){
int t,m,n;
scanf("%d",&t);
REP(i,1,t+1){
scanf("%d%d",&m,&n);
Input(m,n);
Hunt(m,n);
printf("Case #%d:\n%d\n",i,d[0]);
}
return 0;
}
HDU---Labyrinth的更多相关文章
- hdu 4826 Labyrinth DP
题目链接:HDU - 4826 度度熊是一只喜欢探险的熊,一次偶然落进了一个m*n矩阵的迷宫,该迷宫只能从矩阵左上角第一个方格开始走,只有走到右上角的第一个格子才算走出迷宫,每一次只能走一格,且只能向 ...
- 百度之星资格赛 hdu 4826 Labyrinth 动态规划
/********************* Problem Description 是一仅仅喜欢探险的熊.一次偶然落进了一个m*n矩阵的迷宫,该迷宫仅仅能从矩阵左上角第一个方格開始走,仅仅有走到右上 ...
- hdu 4826 Labyrinth(简单dp)
Description 度度熊是一只喜欢探险的熊,一次偶然落进了一个m*n矩阵的迷宫,该迷宫只能从矩阵左上角第一个方格开始走,只有走到右上角的第一个格子才算走出迷宫,每一次只能走一格,且只能向上向下向 ...
- HDU 3853:LOOPS(概率DP)
http://acm.split.hdu.edu.cn/showproblem.php?pid=3853 LOOPS Problem Description Akemi Homura is a M ...
- hdu 1072 Nightmare (bfs+优先队列)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1072 Description Ignatius had a nightmare last night. H ...
- hdu 1026 Ignatius and the Princess I (bfs+记录路径)(priority_queue)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1026 Problem Description The Princess has been abducted ...
- hdu 1885 Key Task
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1885 Key Task Description The Czech Technical Univers ...
- hdu 1026 Ignatius and the Princess I
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1026 Ignatius and the Princess I Description The Prin ...
- hdu 1702 ACboy needs your help again!
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1702 ACboy needs your help again! Description ACboy w ...
- hdu 1026 Ignatius and the Princess I【优先队列+BFS】
链接: http://acm.hdu.edu.cn/showproblem.php?pid=1026 http://acm.hust.edu.cn/vjudge/contest/view.action ...
随机推荐
- YII 1.0 缓存使用
在main.php的组件components中配置设置添加缓存 'cache'=>array( 'class' => 'system.caching.CFileCache' ), 也就是f ...
- Hibernate常见异常
1.数据库编码问题 主要错误信息 WARN: SQL Error: 1366, SQLState: 22001 ... ERROR: Data truncation: Incorrect string ...
- shc加密shell脚本
下载地址:http://www.datsi.fi.upm.es/~frosal/sources/ 安装 .tgz cd shc- mkdir -p /usr/local/man/man1 这步是必须的 ...
- 谱聚类 Spectral Clustering
转自:http://www.cnblogs.com/wentingtu/archive/2011/12/22/2297426.html 如果说 K-means 和 GMM 这些聚类的方法是古代流行的算 ...
- SVG的path的使用
SVG的path的使用: 参考:http://justcoding.iteye.com/blog/2226354 <%@ page language="java" conte ...
- 在Express中安装XTemplate
上一节讲了安装Express,并且生成了一个"microblog"的工程,我们的目标是在工程下安装XTemplate: 1.安装xtpl npm install xtpl xtem ...
- loadrunner:web services接口测试
本文以实例讲解web services接口测试操作,内容包括:脚本生成.参数化和接口与接口间的取值关联操作. 网站"http://www.webxml.com.cn/zh_cn/web_se ...
- 开源半成品的Web版工作流模板设计器(基于AngularJS 2和Redux), 还在继续填坑中
先上个图: 很多企业内部的应用都需要有个工作流平台(插件),无奈灵活方便好用且能够自行更改代码定制嵌入的实在不多,只好自己动手慢慢搞. https://github.com/shibamo/99-fl ...
- 前端开发在IOS端遇到的一个诡异问题(Delegate 失效)
一.前言 最近同事问到一个问题,一个前端页面在IOS端真机测试下出现一个比较诡异的问题,如果没有遇到过估计也是一筹莫展.今天特此记录一下,或许能帮到后面遇到这个问题的朋友少绕一些弯路.这是关于JQue ...
- Vue.js 系列教程 ②
这是关于 JavaScript 框架 Vue.js 五个教程的第二部分.在这一部分,我们将学习组件,Props 以及 Slots.这不是一个完整的指南,而是基础知识的概述,所以你可以了解Vue.js ...