博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷 P1508 Likecloud-吃、吃、吃
阅读量:5158 次
发布时间:2019-06-13

本文共 1055 字,大约阅读时间需要 3 分钟。

采用的动态规划

状态:f[i][j]表示李大水牛走到格子(i,j)时能获得的最大价值

转移:f[i][j]=max(max(f[i+1][j+1],f[i+1][j]),f[i+1][j-1])+a[i][j] 对下一行(题目是从下往上走的)三个能走到当前格子的所能获得的最大价值取最大值再加上现在这个格子的价值,还是比较好想的

注意:下一行三个格子如果没能被走到,那下一行三个格子就不能往上转移到这个格子

1 #include
2 using namespace std; 3 int n,m,f[210][210],a[210][210],ans=-9999999; 4 int main(){ 5 scanf("%d%d",&n,&m); 6 for(int i=1;i<=n;i++){ 7 for(int j=1;j<=m;j++){ 8 scanf("%d",&a[i][j]); 9 }10 }11 for(int i=0;i<=n+1;i++){12 for(int j=0;j<=m+1;j++){13 f[i][j]=-9999999;14 }15 }16 f[n][m/2]=a[n][m/2];f[n][m/2+1]=a[n][m/2+1];f[n][m/2+2]=a[n][m/2+2];17 for(int i=n-1;i>=1;i--){18 for(int j=1;j<=m;j++){19 if(f[i+1][j+1]!=-9999999 || f[i+1][j]!=-9999999 || f[i+1][j-1]!=-9999999){20 f[i][j]=max(max(f[i+1][j+1],f[i+1][j]),f[i+1][j-1])+a[i][j];21 }22 }23 }24 for(int j=1;j<=m;j++){25 ans=max(ans,f[1][j]);26 }27 cout<

 

转载于:https://www.cnblogs.com/Laehcim/p/10922937.html

你可能感兴趣的文章
OpenOffice 实现OFFICE在线预览
查看>>
Stardew Valley(星露谷物语)Mod开发之路 写在前面
查看>>
链表使用指针充分利用内存 手打分配(摈弃系统动态分配:new/delete)
查看>>
apply,call,bind的区别
查看>>
也谈谈学习
查看>>
针对于多线程概念的理解
查看>>
宿主机为linux、windows分别实现VMware三种方式上网(转)
查看>>
红黑树
查看>>
关于异步的初步认识
查看>>
vue--mixins
查看>>
iOS+HTML5
查看>>
洛谷P1004 方格取数
查看>>
PHP服务器端跨域
查看>>
大白话解析模拟退火算法(转载)
查看>>
虚拟机中3种常见的网络模式
查看>>
三层交换机的设置
查看>>
汇编语言:第九章 转移指令的原理
查看>>
内核的ramdisk
查看>>
Gerrit+apache+H2数据库简单安装配置及建库流程
查看>>
(第三周)团队模式中对交响乐团模式的理解
查看>>