当前位置: 首页 > news >正文

摘花生(简单DP)

Hello Kitty想摘点花生送给她喜欢的米老鼠。

她来到一片有网格状道路的矩形花生地(如下图),从西北角进去,东南角出来。

地里每个道路的交叉点上都有种着一株花生苗,上面有若干颗花生,经过一株花生苗就能摘走该它上面所有的花生。

Hello Kitty只能向东或向南走,不能向西或向北走。

问Hello Kitty最多能够摘到多少颗花生。

输入格式

第一行是一个整数T,代表一共有多少组数据。

接下来是T组数据。

每组数据的第一行是两个整数,分别代表花生苗的行数R和列数 C。

每组数据的接下来R行数据,从北向南依次描述每行花生苗的情况。每行数据有C个整数,按从西向东的顺序描述了该行每株花生苗上的花生数目M。

输出格式

对每组输入数据,输出一行,内容为Hello Kitty能摘到得最多的花生颗数。

数据范围

1≤T≤100,

1≤R,C≤100,

0≤M≤1000

输入样例:

2
2 2
1 1
3 4
2 3
2 3 4
1 6 5

输出样例:

8
16

还是一样的方法,闫式dp分析法,如下图

注意图中的w(i,j)是代表第i个花生苗含花生的数量,这里应该是w(i),当时写错了,然后代码中没有出现w(i)的原因是因为直接用arr[i][j]来表示w(i)了

代码实现:

#include<iostream>
using namespace std;
const int N=110;
int arr[N][N];
int q[N][N];//用来存储对应条件下最多得到花生的数量
int T;
int main()
{cin>>T;while(T--){int n,m;cin>>n>>m;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++) cin>>arr[i][j];for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){q[i][j]=max(q[i-1][j],q[i][j-1])+arr[i][j];}}cout<<q[n][m]<<endl;}return 0;
}
http://www.lryc.cn/news/38320.html

相关文章:

  • 2022济南大学acm新生赛题解
  • 策略模式教程
  • 什么是刺猬理念
  • RPC通信相关
  • Node.js + MongoDB 搭建博客 -- 登录页面
  • 互联网新理念,对于WEB 3.0 你怎么看?
  • Git使用教程:最详细、最傻瓜、最浅显、真正手把手教
  • 【面试题】Redis面试题汇总(无解答)
  • RHCSA-用户和组管理和文件系统权限(3.11)
  • RK3588平台开发系列讲解(同步与互斥篇)信号量介绍
  • One-YOLOv5 v1.2.0发布:支持分类、检测、实例分割
  • Zookeeper的Java API操作
  • Web3:前端知识和后端知识基础
  • 调试射频TX和rx实验工程出现的问题与反思
  • 代码随想录刷题-数组总结篇
  • Qt读xml文件
  • Qt样式表
  • Docker与微服务实战2022
  • Linux(传输层二)
  • 4.Spring Cloud (Hoxton.SR8) 学习笔记—Nacos微服务治理、Nacos配置管理
  • 卷王都在偷偷准备金三银四了...
  • 【C++的OpenCV】第十二课-OpenCV图像常用操作(九):找到图像的边界(轮廓)findContours()和drawContours()
  • 传奇开服流程—传奇单机架设教程
  • 【GoF 23】篇3:抽象工厂
  • 软考高级信息系统项目管理师系列之三十七:流程管理
  • 【WPS文字-Word】WPS文字设置段落居中对齐后公式左边右边的文字仍然无法跟公式对齐,公式和文字对不齐
  • 英文术语对照
  • CSS 扫盲
  • 【Redis黑马点评】基于session实现登录【短信验证码登录、登录验证功能、拦截器】过程详解
  • 【C++】通过priority_queue、reverse_iterator加深对于适配器和仿函数的理解