花生采摘(洛谷-P1086)
题目描述
鲁宾逊先生有一只宠物猴,名叫多多。这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:“欢迎免费品尝我种的花生!――熊字”。
鲁宾逊先生和多多都很开心,因为花生正是他们的最爱。在告示牌背后,路边真的有一块花生田,花生植株整齐地排列成矩形网格(如图1)。有经验的多多一眼就能看出,每棵花生植株下的花生有多少。为了训练多多的算术,鲁宾逊先生说:“你先找出花生最多的植株,去采摘它的花生;然后再找出剩下的植株里花生最多的,去采摘它的花生;依此类推,不过你一定要在我限定的时间内回到路边。”
我们假定多多在每个单位时间内,可以做下列四件事情中的一件:
1) 从路边跳到最靠近路边(即第一行)的某棵花生植株;
2) 从一棵植株跳到前后左右与之相邻的另一棵植株;
3) 采摘一棵植株下的花生;
4) 从最靠近路边(即第一行)的某棵花生植株跳回路边。
现在给定一块花生田的大小和花生的分布,请问在限定时间内,多多最多可以采到多少个花生?注意可能只有部分植株下面长有花生,假设这些植株下的花生个数各不相同。
例如在图2所示的花生田里,只有位于(2, 5), (3, 7), (4, 2), (5, 4)的植株下长有花生,个数分别为13, 7, 15, 9。沿着图示的路线,多多在21个单位时间内,最多可以采到37个花生。
输入输出格式
输入格式:
输入的第一行包括三个整数,M, N和K,用空格隔开;表示花生田的大小为M * N(1 <= M, N <= 20),多多采花生的限定时间为K(0 <= K <= 1000)个单位时间。接下来的M行,每行包括N个非负整数,也用空格隔开;第i + 1行的第j个整数Pij(0 <= Pij <= 500)表示花生田里植株(i, j)下花生的数目,0表示该植株下没有花生。
输出格式:
一行,这一行只包含一个整数,即在限定时间内,多多最多可以采到花生的个数。
输入输出样例
输入样例#1:
6 7 21
0 0 0 0 0 0 0
0 0 0 0 13 0 0
0 0 0 0 0 0 7
0 15 0 0 0 0 0
0 0 0 9 0 0 0
0 0 0 0 0 0 0输出样例#1:
37
输入样例#2:
6 7 20
0 0 0 0 0 0 0
0 0 0 0 13 0 0
0 0 0 0 0 0 7
0 15 0 0 0 0 0
0 0 0 9 0 0 0
0 0 0 0 0 0 0输出样例#2:
28
思路:
找出最大的花生点,从这个地方找第二大的花生点,以此类推。
边界条件是此处没有花生或采此处花生的时间不够用。
源代码
#include<iostream>
#include<cmath>
using namespace std;
int m,n,k,sum=0;
int a[25][25];void dfs(int x0,int y0,int time0)
{int x,y,time;int maxx=-99999999;int i,j;for(i=1;i<=m;i++)for(j=1;j<=n;j++)if(a[i][j]>maxx){maxx=a[i][j];//记录花生最多的个数x=i;//x坐标y=j;//y坐标}if(y0==0)//边界条件y0=y;time=fabs(x-x0)+abs(y-y0)+x+1;//采当前花生花费的时间if(time0<time||a[x][y]==0)//返回条件return;else{sum+=a[x][y];//统计所采摘的花生个数a[x][y]=0;//采摘归零dfs(x,y,time0-abs(x-x0)-abs(y-y0)-1);//向下搜索}
}int main()
{int i,j;cin>>m>>n>>k;for(i=1;i<=m;i++)for(j=1;j<=n;j++)cin>>a[i][j];dfs(0,0,k);cout<<sum<<endl;return 0;
}
花生采摘(洛谷-P1086)相关推荐
- 信息学奥赛一本通 1927:【04NOIP普及组】花生采摘 | OpenJudge NOI 1.13 38:花生采摘 | 洛谷 P1086 [NOIP2004 普及组] 花生采摘
[题目链接] ybt 1927:[04NOIP普及组]花生采摘 OpenJudge NOI 1.13 38:花生采摘 洛谷 P1086 [NOIP2004 普及组] 花生采摘 [题目考点] 1. 模拟 ...
- 洛谷P1086花生采摘c语言
洛谷P1086花生采摘 最近在学习洛谷上的题,以后会持续更新的 文章目录 **洛谷P1086花生采摘** 思想 代码 题目描述 输入格式 思想 具体思想利用深搜,算出他剩下的时间是否足够采摘下一个花生 ...
- 洛谷 P1086 花生采摘
P1086 花生采摘 题目描述 鲁宾逊先生有一只宠物猴,名叫多多.这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:"欢迎免费品尝我种的花生!――熊字". ...
- 花生采摘(洛谷P1086题题解,Java描述)
题目要求 P1086题目链接 分析 这个题是强行规定的贪心,就很简单啦.只需要排个序,逐一尝试即可. 每次都要试图跳到下一个格子,试一试过去消耗的距离加上从新位置到跳回路边的距离和会不会超出限制. 是 ...
- 洛谷 - 试炼场(全部题目备份)
整理的算法模板合集: ACM模板 目录 1.新手村 1 - 1 洛谷的第一个任务 1 - 2 顺序与分支 1 - 3 循环!循环!循环! 1 - 4 数组 1 - 5 简单字符串 1 - 6 过程函数 ...
- 洛谷-题解 P2672 【推销员】
独门思路!链表加优先队列! 这题一望,贪心是跑不掉了,但是我贪心并不好,所以想到了一个复杂一些但思路更保稳的做法 思路: 1 因为是离线操作,所以我们可以倒着求,先求x=n的情况,因为那样直接就知道了 ...
- 洛谷 P1142 轰炸
洛谷 P1142 轰炸 题目描述 "我该怎么办?"飞行员klux向你求助. 事实上,klux面对的是一个很简单的问题,但是他实在太菜了. klux要想轰炸某个区域内的一些地方,它们 ...
- 洛谷 P1387 最大正方形
P1387 最大正方形 题目描述 在一个n*m的只包含0和1的矩阵里找出一个不包含0的最大正方形,输出边长. 输入输出格式 输入格式: 输入文件第一行为两个整数n,m(1<=n,m<=10 ...
- 洛谷P2763 试题库问题
题目:https://www.luogu.org/problemnew/show/P2763 题目描述 «问题描述: 假设一个试题库中有n道试题.每道试题都标明了所属类别.同一道题可能有多个类别属性. ...
最新文章
- php ile_get_contents无法请求https连接的解决方法
- vue开发使用vue-particles如何兼容IE11?
- 你给需求文档,AI就能帮你开发安卓App
- 蓝桥杯-c++_ch04_02_修正版(java)
- 【LeetCode】剑指 Offer 58 - I. 翻转单词顺序
- CLR via C#
- java玻璃效果_swing透明效果(没aero毛玻璃那么好看)
- 计算机中的颜色VI——从色相值到纯色的快速计算
- hbm.xml支持的类型
- HDU 1422 重温世界杯
- readonly属性
- [翻译] TensorFlow 分布式之论文篇 “TensorFlow : Large-Scale Machine Learning on Heterogeneous Distributed Syst
- RichText widgets require a Directionality widget ancestor.
- FPGA与ASIC区别
- 【FXP】连接站点并上传包文件:
- error occurred during initialization of VM报错解决
- 图像轮廓提取算法(Opencv基于C++实现)
- 软工网络15团队作业7——Alpha冲刺之事后诸葛亮
- python导出结果_Python连接Oracle数据查询导出结果
- 贴片电阻常规尺寸及功率