FJUT 1735

开宝箱
你确定我是来开宝箱不是来比赛的吗??艾玛,这是哪,天啊,伦家竟然穿越了。
摆在眼前的是1个n*m(0< n<=100&&0< m<=100)的宝箱矩阵,而你就在这个矩阵的左上角也就是入口处。冲啊,开宝箱去,然而脚不听话啊,你的脚失去了向左走与向上走(方向是相对于整个地图,换句话说不是通过你脸的朝向来决定方向,你只能↓和→)的能力。(你:这设定真奇怪啊 。WGX大神:让你四处走还不把我的宝箱全开了)。
不管了开宝箱要紧。假设每个宝箱有一个数字V,如果是正数那么你获得V个金币,如果是负数,哈哈,不好意思,扣去相应个金币。(哭晕在厕所)。
那么问题来了:
如果你在已知宝箱的奖励的情况下,请选择一条路线,这条路线能让你获得最多的金币,当然所有走过的宝箱必须打开,不能说因为是负数你就选择不去打开它,并且出口(左上)和入口(右下)的那两个宝箱是必经点,也必须打开。
你的任务只是求出该路线获得的金币值就行。如下图,我们只要输出19就行。

Input
第一行输入一个正整数T代表有T组数据,接下来有T组数据
对于每组数据,第一行输入两个正整数n 和m(n为行数m为列数)接下来是n行数据,每行数据有m个V,且V为整型,分别对应每个宝箱的获奖情况(-200<=V<=200)。
Output
对于每组数据输出一个整数,代表所能获得的最大金币值。
SampleInput
2
4 4
1 2 -9 8
-5 5 7 3
10 1 1 2
6 5 8 -6
3 5
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
SampleOutput
19
7

从左上角开始,到右下角出去,求经过路线的和的最大值。。。又是一道dp题。。。找到初始状态,状态转移,还有最后的结果位置,弄清楚这些,分分钟就可以AC了。
首先找三个步骤中最关键的一步状态转移:每一次只能向下或者向右,那么就有了下面的状态转移方程:
dp[i] [j]= max( dp[i-1] [j], dp[i] [j-1])+a[i] [j];
就是根据移动 反推即可。当前的最优解就是上一步的最优解加上这一步的数据,所有子问题达到最优就能实现整体最优。。
当然这里注意下三点
1、让数组的i j 都从1开始输入,因为有个dp[i-1] [j-1] 防止下标小于0的情况
2、每一格的范围-200到200 所以让dp 【i】【j】初始化为小于-200的数值.
3、 i=j=1的时候特判一下dp的值

代码参考如下:

#include<stdio.h>
int max(int a,int b)
{ return a>b?a:b;
}
int b[101][101];
int f[101][101];
int main()
{int t;scanf("%d",&t);while(t--){int n,m,i,j,k,kk;scanf("%d%d",&n,&m);for(i=0;i<=n+1;i++){for(j=0;j<=m+1;j++)f[i][j]=-201;}for(i=1;i<=n;i++){for(j=1;j<=m;j++)scanf("%d",&b[i][j]);}for(i=1;i<=n;i++){for(j=1;j<=m;j++){if(i==1 && j==1)f[1][1]=b[1][1];elsef[i][j]=max(f[i-1][j],f[i][j-1])+b[i][j];}}printf("%d\n",f[n][m]);}return 0;
}

FJUT 1735 开宝箱相关推荐

  1. 青蛙过河 猴子爬山 兔子繁殖 开宝箱2 找气球 指针函数 铺地砖

    Problem A: 青蛙过河 Description 一条小溪尺寸不大,青蛙可以从左岸跳到右岸,在左岸有一石柱L,面积只容得下一只青蛙落脚,同样右岸也有一石柱R,面积也只容得下一只青蛙落脚.有一队青 ...

  2. 急先锋开宝箱问题(Java实现)

    开宝箱(Java8) 我在参与腾讯校招机考的时候做过类似的题(当然比这个难了),是宝箱和钥匙匹配的题,所以想找个类似的题目做做,然后就搜到这题,对于算法效率和能不能通过测试我不清楚,因为没有找到题目来 ...

  3. C-11 Problem H: 开宝箱2

    Problem H: 开宝箱2 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 1443 Solved: 860 Description 急先锋是一个商人 ...

  4. 61.蓝桥杯之电视台开宝箱节目

    电视台开宝箱节目:打进电话的人可以开启一个宝箱.箱子中有一件礼品.礼品是iphone的机率为1/12:是mp3 的机率为1/5:是洗衣粉的机率为1/2:剩余是KFC优惠券. 每次打进电话,宝箱会重置. ...

  5. 开宝箱抽奖CSS3动画代码

    下载地址 使用Zepto.js插件实现的开宝箱抽奖,动画效果配合CSS3代码,很不错的特效代码,特效基于Zepto.CSS3,其中有好几种CSS3动画效果,背景光环滚动,宝箱摇摆开启,弹出提示层,还是 ...

  6. zepto.js手机端开宝箱动画js特效

    下载地址 zepto.js实现的手机端开宝箱动画特效 dd:

  7. Problem AB: 开宝箱 1/2 (最沙雕的做法)(未用指针做) 改:附上一种指针做法...

    Description 急先锋是一个商人,有一天找到了一个宝箱,宝箱需要正确的密码才能打开.同时他发现宝箱上有一个数字,和一份密码表.密码表上有n个密码,只有一个密码是正确的. 急先锋所在的岛上有m个 ...

  8. 4444: 开宝箱——指针基础

    这道题目是我很喜欢的一道题,这道题目出的其实很好,就是把指针的知识点很好地融入到了这道题目里面,如果只是掌握指针的基本应用,我觉得这道题目完全就足够了,我一向不提倡题海战术,刷题要"精&qu ...

  9. 开宝箱怎么设计才算好?大脑说了算!

    开宝箱怎么设计才算好?大脑说了算! 策划运营 /  2014-10-24 /  Brain Intelligence 分享到: 1 本文是Brain Intelligence(布雷恩英咨询公司)给游戏 ...

最新文章

  1. ajax调用后台java类_ajax调用java后台方法是什么
  2. cocos2dx动画Animation介绍
  3. mysql的字段为bit时,插入数据报Data too long
  4. 语料库与python应用_语料库与Python应用/语料库翻译学文库
  5. RO一键替换魔物SPR
  6. 怎么用j-link+j-flash烧写MM32
  7. 终于明白什么是VoLTE,以及VoIP、CSFB、SIP、IMS...
  8. 助眠好物推荐,改善睡眠的好方法
  9. Swift强大的数组
  10. outlook 邮件插入字自动消失
  11. Contour Features 边界特征
  12. 联想电脑 linux BIOS,Ubuntu 17.10让一些联想笔记本电脑的BIOS出现问题
  13. Selenium执行完毕未关闭chromedriver/geckodriver进程的解决办法(java版+python版)
  14. 自动保存表单草稿插件
  15. 抓取设了CSS反爬机制的大众点评数据(下)
  16. vi模式下字符串的替换
  17. mysql怎么建组合索引_mysql索引及建立组合索引原则
  18. 【Python实战】爬取豆瓣排行榜电影数据(含GUI界面版)
  19. python文本处理入门:44行代码写一个简单的藏头诗生成器
  20. 如何用你的Python代码赚取你的第一桶金

热门文章

  1. 裸金属服务器能降级虚拟机不,弹性裸金属服务器的八大特征
  2. 拯救智慧城市:要智商还有生气
  3. 函数右括号错误! PreTranslateMessage(MSG* pMsg)未返回
  4. 如何使用docker和docker-compose在本地Testnet上开发EOS区块链
  5. RCLAMP0524P超低电容TVS二极管阵列,DFN-10L封装
  6. 拉了300M的网,下载速度为啥还是这么慢?计算机基础(五)之网络层完结
  7. 项目、习惯以及Todolist的区别
  8. 捕获阿里云异常日志遇到的问题
  9. 生活手机必备5款APP,一用就会上瘾,简直就是生活中的好帮手
  10. java如何为图片加水印