来源:牛客网
题目描述
 
最近,奶牛们热衷于把金币包在面粉里,然后把它们烤成馅饼。
第i块馅饼中含有Ni(1<=Ni<=25)块金币,并且,这个数字被醒目地标记在馅饼表面。
奶牛们把所有烤好的馅饼在草地上排成了一个R行(1<=R<=100)C列(1<=C<=100)的矩阵。
你现在站在坐标为(1,1)的馅饼边上,当然,你可以拿到那块馅饼里的所有金币。
你必须从现在的位置,走到草地的另一边,在坐标为(R,C)的馅饼旁边停止走动。
每做一次移动,你必须走到下一列的某块馅饼旁边,
并且,行数的变动不能超过1(也就是说,如果现在你站在坐标为(r,c)的馅饼边上,下一步你可以走到坐标为(r-1,c+1),(r,c+1),或者(r+1,c+1)的馅饼旁边)(只能向右上,向右,向右下)
当你从一块馅饼边经过,你就可以拿走馅饼里所有的金币。
当然啦,你一定不会愿意因半路离开草地而失去唾手可得的金币,但,最终你一定得停在坐标为(R,C)的馅饼旁边。  
现在,你拿到了一张标记着馅饼矩阵中,每一块馅饼含金币数量的表格。那么,按照规则,你最多可以拿到多少金币呢?      
比方说,奶牛们把馅饼排成如下的矩阵,矩阵中的数字表示该位置的馅饼中含金币的数量:  
第1行: 两个用空格隔开的整数,R和C第2..R+1行: 每行包含C个用空格隔开的正整数,
依次表示一行中从左往右各个馅饼里金币的数量
输出描述:
第1行: 输出一个正整数,表示你所能收集到的最大金币数目
示例1
 
输入
复制
3 7
6 5 3 7 9 2 7
2 4 3 5 6 8 6
4 9 9 9 1 5 8
 
输出
复制
50
 
解题思路:dp
 
AC代码1:
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<string>
#include<iostream>
using namespace std;
typedef long long ll;
const int maxn=1e2+;
int map[maxn][maxn];
int dp[maxn][maxn]; int main()
{
int R,C;
cin>>R>>C;
for(int i=;i<=R;i++)
for(int j=;j<=C;j++)
cin>>map[i][j];
memset(dp,,sizeof(dp));
dp[][]=map[][];
for(int j=;j<=C;j++) //这里有一点要注意,外层循环是列j,内层才是行i,自行理解一下
{
for(int i=;i<=R;i++)
{
if(i!=j)
dp[i][j]=max(dp[i][j-],max(dp[i-][j-],dp[i+][j-]))+map[i][j];
else dp[i][j]=dp[i-][j-]+map[i][j];
}
}
cout<<dp[R][C]<<endl;
return ;
}

AC代码2:

#include <bits/stdc++.h>
using namespace std;
const int MAXN = ;
int mp[MAXN][MAXN], dp[MAXN][MAXN], r, c;
int main() {
scanf("%d%d", &r, &c);
for (int i = ; i <= r; i++)
for (int j = ; j <= c; j++)
scanf("%d", &mp[i][j]);
memset(dp, , sizeof(dp));
dp[][] = mp[][];
for (int j = ; j <= c; j++) {
for (int i = ; i <= r&&i<=j; i++) {
for (int k = i - ; k <= i + ; k++)
if (dp[k][j - ])
dp[i][j] = max(dp[k][j - ],dp[i][j]);
if (dp[i][j])
dp[i][j] += mp[i][j];
}
}
printf("%d\n", dp[r][c]);
return ;
}

dp-捡金币的更多相关文章

  1. noip模拟赛 捡金币

    问题描小空正在玩一个叫做捡金币的游戏.游戏在一个被划分成 n行 n列的网格状场地中进行.每一个格子中都放着若干金币,并且金币的数量会随着时间而不断变化. 小空的任务就是在网格中移动,拾取尽量多的金币. ...

  2. 清北学堂模拟day4 捡金币

    [问题描述]小空正在玩一个叫做捡金币的游戏.游戏在一个被划分成 n行 n列的网格状场地中进行.每一个格子中都放着若干金币,并且金币的数量会随着时间而不断变化. 小空的任务就是在网格中移动,拾取尽量多的 ...

  3. dp-简单迷宫捡金币

    链接:https://ac.nowcoder.com/acm/challenge/terminal 吃货LP参加了珠海美食节,每见一家摊位都会大吃一顿,但是如果不加收敛,接下来的日子就只能吃土了,所以 ...

  4. 【noi 2.7_2987】小兔子捡金币(算法效率)

    题意:问蛇形回文的访问次序. 解法:很基础的一道题,先算出询问的点处在第几环,再用4个while一个个走一遍这一圈.P.S.我一直想办法想用不用while(),可是真的一直WA!所以用while()既 ...

  5. P1834 种花小游戏

    我只是想做壮鸭低劈啊,为什么只有状压没有DP-- 原题: 植物大战僵尸这款游戏中,还有个特别有意思的赚钱方式--种花(能长金币的花).种出来的金币需要玩家点击才能得到,或者,玩家可以购买一只蜗牛来帮助 ...

  6. noip2017考前整理(未完)

    快考试了,把我以前写过的题回顾一下.Noip2007 树网的核:floyd,推出性质,暴力.Noip2008 笨小猴:模拟Noip2008 火柴棒等式:枚举Noip2008 传纸条:棋盘dpNoip2 ...

  7. 题解:2018级算法第六次上机 C6-危机合约

    题目描述 样例: 实现解释: 没想到你也是个刀客塔之二维DP 知识点: 动态规划,多条流水线调度?可以看做一种流水线调度 坑点: 输入内容的调整(*的特殊判定),开头结尾的调整策略 从题意可知,要做的 ...

  8. C++ 版本的 行为树的简单实现

    如果你想转载这篇文章呢,请严格按照以下格式注明出处和作者 出处:http://www.cnblogs.com/anxin1225/p/4827294.html 作者:Anxin1225.Bianchx ...

  9. 那些年,我们一起被坑的H5音频

    原文地址:http://weibo.com/p/23041874d6cedd0102vkbr   不要被这么文艺的标题吓到,这里不会跟你讲述中学时期泡妞史,也不会有其它什么现实不该有而小说噼里啪啦不能 ...

  10. [Python] Codecombat 攻略 Sarven 沙漠 (1-43关)截止至30关

    首页:https://cn.codecombat.com/play语言:Python 第二界面:Sarven沙漠(43关)时间:4-11小时内容:算术运算,计数器,while循环,break(跳出循环 ...

随机推荐

  1. 滑雪(dfs+dp)

    滑雪 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 113903   Accepted: 43478 Description ...

  2. Vue - 表单修饰符

    .lazy 在默认情况下,v-model 在每次 input 事件触发后将输入框的值与数据进行同步 . 使用 lazy 修饰符,从而转变为使用 change 事件进行同步 <div id=&qu ...

  3. JAXB--obj2xml&xml2obj

    参考: https://www.cnblogs.com/mumuxinfei/p/8948299.html  去掉 xsi:type="echoBody" xmlns:xsi=&q ...

  4. 概率dp 148 D

    概率dp 设 f(i,j)f(i,j) 表示有 ii 只白鼠,jj 只黑鼠时A先手胜的概率 初始状态 全白时,显然先手必胜 有一只黑鼠时,先手若抽到黑鼠则后手必胜,所以先手首回合必须抽到白鼠 f(i, ...

  5. 排序:ORDER BY

    1.按照字段值进行排序: 语法:order by 字段 升序|降序 (asc|desc) 默认情况下为“升序” asc.asc=ascending 升 desc=descending 降 2.允许多字 ...

  6. WPscan扫描工具安装使用

    WPScan是Kali Linux默认自带的一款漏洞扫描工具,它采用Ruby编写,能够扫描WordPress网站中的多种安全漏洞,其中包括WordPress本身的漏洞.插件漏洞和主题漏洞.最新版本WP ...

  7. JS高级---原型的简单的语法

    原型的简单的语法 构造函数,通过原型添加方法,以下语法,手动修改构造器的指向 实例化对象,并初始化,调用方法 <!DOCTYPE html> <html lang="en& ...

  8. 豆瓣工程师为你解答关于 Python3 编程方面的问题

    Python是如此活跃的一种语言,几乎伴随互联网的发生而创立,又伴随互联网的极速发展而繁荣.使用Python会遇到这样的问题:什么时候该用多进程?怎样提高代码执行效率?Flask为什么流行?学习Pyt ...

  9. Plastic Sprayers Manufacturer -Plastic Spray Bottle Product Features, Nozzle Properties

    Nowadays, plastic spray bottles are widely used in the plastic packaging industry. What are the char ...

  10. jvm01

    hotspot:是jvm的核心组件(或者名称),jvm 需要对class文件进行编译成cpu能直接运行的代码.hotspot会对频繁使用的class代码进行缓存,不会再次编译,类似于缓存 client ...