香蕉采摘

本文介绍了关于香蕉采摘的问题,小明通过训练宠物猴小圣进行采摘,每次选择香蕉数量最多的方向前进。给出输入输出样例及解决方案,涉及二维数组遍历和路径规划。
摘要由CSDN通过智能技术生成

题目:香蕉采摘(一听就有种花生采摘的感觉,但是,不是[奸笑])
小明有一只宠物猴,名叫小圣。这天,他们正沿着乡间小路散步,突然发现了一片香蕉林,小明和小圣都非常的高兴,因为他们最爱香蕉。香蕉树整齐的排列着,形成了一个R行C列的网格,网格的每个格子里面有一棵香蕉树,小明一眼就能看出每棵树上有多少个香蕉,为了训练小圣的数学,小明吩咐小圣去采摘香蕉并要求它:
你从第一行第一列出发,也是就是(1,1)的位置开始,每次往上下左右四个方向去找相邻的一棵树,这个树要是没有被采摘过的而且这棵树上的香蕉要是这四个方向中数量最多的(保证每次只能找到唯一一棵这样的树),然后进行采摘。按照这样的方法,最终小圣总是会在(R,C)处停止然后采摘掉那里的香蕉。
现在给定网格的大小,以及每个格子里香蕉的数量,请你计算一下最终小圣一共采摘了多少香蕉。(又是考试题[汗])
输入格式
第一行 两个整数R C,分别表示香蕉林网格的总行数和总列数,1≤R≤40,1≤C≤40
接下来R行,每行C个整数,分别表示网络中每个格子里的一棵香蕉树上香蕉的个数,每棵香蕉树上香蕉的个数是1到100之间的整数
输出格式
一个整数,表示猴子小圣按照小科吩咐的移动方法最终到达(R,C)处一共采摘的香蕉的总数
输入输出样列
输入样例1:
3 4
3 3 4 5
4 5 3 2
1 7 4 2
输出样例1:
39
分析一下数据:
3 4
3 3 4 5
4 5 3 2
1 7 4 2
在这里插入图片描述
思路:从(1,1)的位置开始,每次都相当前各自的上、下、左、右四个方向去遍历找到最大的一个数。
上: (x,y-1) 下: (x,y+1) 左: (x-1,y) 右: (x+1,y)
什么时候到达终点?
X=R && Y=C时达到终点,也就是X!=R|| Y!=C时 循环执行。(如果打两个等号会被标黄,你们注意一下哈!)
注意每采摘完一棵树,要把数量清零,避免被重复采摘。
定义.上下左右四个方向
dir[1]表示向右
dir[1][0]=1表示横向增加1
dir[1][1]=0表示纵向增加0
dir[2]表示向左
dir[2][0]=-1表示横向减少1
dir[2][1]=0表示纵向增加0
dir[3]表示向下
dir[3][0]=0表示横向增加0
dir[3][1]=1表示纵向增加1
dir[4]表示向上
dir[4][0]=0表示横向增加0
dir[4][1]=-1表示纵向减少1

#include<bits/stdc++.h>
using namespace std;
const int dir
鲁宾逊先生有一只宠物猴,名叫多多。这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:“欢迎免费品尝我种的花生!——熊字”。 鲁宾逊先生和多多都很开心,因为花生正是他们的最爱。在告示牌背后,路边真的有一块花生田,花生植株整齐地排列成矩形网格(如图1)。 有经验的多多一眼就能看出,每棵花生植株下的花生有多少。为了训练多多的算术,鲁宾逊先生说:“你先找出花生最多的植株,去采摘它的花生;然后再找出剩下的植株里花生最多的,去采摘它的花生;依此类推,不过你一定要在我限定的时间内回到路边。” 我们假定多多在每个单位时间内,可以做下列四件事情中的一件: 1) 从路边跳到最靠近路边(即第一行)的某棵花生植株; 2) 从一棵植株跳到前后左右与之相邻的另一棵植株; 3) 采摘一棵植株下的花生; 4) 从最靠近路边(即第一行)的某棵花生植株跳回路边。 现在给定一块花生田的大小和花生的分布,请问在限定时间内,多多最多可以采到多少个花生?注意可能只有部分植株下面长有花生,假设这些植株下的花生个数各不相同。 例如在图2所示的花生田里,只有位于(2, 5), (3, 7), (4, 2), (5, 4)的植株下长有花生,个数分别为13, 7, 15, 9。沿着图示的路线,多多在21个单位时间内,最多可以采到37个花生
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值