PAT-1001 采花生
题目描述
- 鲁宾逊先生有一只宠物猴,名叫多多。这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:“欢迎免费品尝我种的花生!——熊字”。
- 鲁宾逊先生和多多都很开心,因为花生正是他们的最爱。在告示牌背后,路边真的有一块花生田,花生植株整齐地排列成矩形网格。有经验的多多一眼就能看出,每棵花生植株下的花生有多少。为了训练多多的算术,鲁宾逊先生说:“你先找出花生最多的植株,去采摘它的花生;然后再找出剩下的植株里花生最多的,去采摘它的花生;依此类推,不过你一定要在我限定的时间内回到路边。”
- 我们假定多多在每个单位时间内,可以做下列四件事情中的一件:
- 1. 从路边跳到最靠近路边(即第一行)的某棵花生植株;
2. 从一棵植株跳到前后左右与之相邻的另一棵植株;
3. 采摘一棵植株下的花生;
4. 从最靠近路边(即第一行)的某棵花生植株跳回路边。- 现在给定一块花生田的大小和花生的分布,请问在限定时间内,多多最多可以采到多少个花生?
- 注意可能只有部分植株下面长有花生,假设这些植株下的花生个数各不相同。例如花生田里只有位于(2, 5), (3, 7), (4, 2), (5, 4)的植株下长有花生,个数分别为 13, 7, 15, 9。多多在 21 个单位时间内,只能经过(4, 2)、(2, 5)、(5, 4),最多可以采到 37 个花生。
输入描述:
- 输入包含多组数据,每组数据第一行包括三个整数 M(1≤M≤20)、N(1≤N≤20)和 K(0≤K≤1000),用空格隔开;表示花生田的大小为 M * N,多多采花生的限定时间为 K个单位时间。
- 紧接着 M 行,每行包括 N 个自然数 P(0≤P≤500),用空格隔开;表示花生田里植株下花生的数目,并且除了0(没有花生),其他所有植株下花生的数目都不相同。
输出描述:
- 对应每一组数据,输出一个整数,即在限定时间内,多多最多可以采到花生的个数。
输入例子:
- 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
输出例子:
- 37
- 对应代码:
- /*
- http://www.nowcoder.com/pat/2/problem/249
- author: ly 2016.6.19
- */
- #include<iostream>
- #include<stdio.h>
- #include<memory.h>
- #include<algorithm>
- using namespace std;
- struct MAX
- {
- int value;
- int hang;
- int lie;
- }m[];
- //规定降序排列
- bool cmp(const MAX &a,const MAX &b)
- {
- return a.value>b.value;
- }
- int main()
- {
- int M,N,k;
- while(scanf("%d%d%d",&M,&N,&k)!=EOF)
- {
- // cin>>M>>N; //花生田的大小
- // scanf("%d%d",&M,&N);
- // cin>>k; //限定时间
- // scanf("%d",&k);
- //memset(m,0,sizeof(m));
- int v=,top=;
- int i=,j=;
- for(i=;i<M;i++)
- for(j=;j<N;j++)
- {
- scanf("%d",&v);
- if(v!=)
- {
- m[top].value=v;
- m[top].hang=i+;
- m[top].lie=j+;
- top++;
- }
- }
- //对于找到的数的大小进行排序
- sort(m,m+top,cmp);
- //将路边看成一个节点 列与第一个最大子节点相同
- int x_l=;
- int y_l=m[].lie; //分x,y方向考虑
- //开始采花生
- int sum=,count=;
- //判断
- for(i=;i<top;i++)
- {
- //是否符合条件
- sum+=abs(m[i].hang-x_l);
- sum+=abs(m[i].lie-y_l);
- sum++; //摘花生
- if(sum+m[i].hang>k)
- break;
- x_l=m[i].hang;
- y_l=m[i].lie;
- count+=m[i].value;
- }
- printf("%d\n",count);
- }
- return ;
- }
日进一小步,月过一大步!!!加油~~
PAT-1001 采花生的更多相关文章
- PAT 1001 A+B 解题报告
PAT 1001 A+B 代码链接:传送门 题目链接:传送门 题目简述: 给定两个值a,b: 范围-1000000 <= a, b <= 1000000: 按指定格式输出a+b的结果,例: ...
- PAT 1001 害死人不偿命的(3n+1)猜想 (15)(C++&JAVA&Python)
1001 害死人不偿命的(3n+1)猜想 (15)(15 分) 卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把(3n+1)砍掉一半.这样一直反 ...
- PAT 1001. A+B Format 解题
GitHub PDF 1001. A+B Format (20) Calculate a + b and output the sum in standard format -- that is, t ...
- PAT 1001 A+B Fotmat
源码 1001. A+B Format (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Calcula ...
- PAT 1001 Format
problem 1001 A+B Format (20)(20 point(s)) Calculate a + b and output the sum in standard format -- t ...
- PAT——1001 害死人不偿命的(3n+1)猜想 (15)
对给定的任一不超过1000的正整数n,简单地数一下,需要多少步(砍几下)才能得到n=1? 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值. 输出格式:输出从n计算到1需要的步数. 输入样例 ...
- PAT 1001 害死人不偿命的(3n+1)猜想
1001 害死人不偿命的(3n+1)猜想 (15 分) 卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把 (3n+1) 砍掉一半.这样一直反复 ...
- PAT 1001. 害死人不偿命的(3n+1)猜想 (15)
卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把(3n+1)砍掉一半.这样一直反复砍下去,最后一定在某一步得到 n=1.卡拉兹在1950年的世界 ...
- PAT 1001
Calculate a + b and output the sum in standard format -- that is, the digits must be separated into ...
随机推荐
- 团队作业——Alpha冲刺 10/12
团队作业--Alpha冲刺 冲刺任务安排 杨光海天 今日任务:编辑界面返回以及预览的intent实现 明日任务:未能按时间要求完成的失败总结 郭剑南 今日任务:优化图像预处理所有功能的函数代码,尝试与 ...
- Docker技术入门与实战 第二版-学习笔记-3-Dockerfile 指令详解
前面已经讲解了FROM.RUN指令,还提及了COPY.ADD,接下来学习其他的指令 5.Dockerfile 指令详解 1> COPY 复制文件 格式: COPY <源路径> .. ...
- RedHat 7.3 Oracle 12.2.0.1 RAC 安装手册(转)
1 准备工作 1.1 关于GRID的一些变化 1.1.1 简化的基于映像的Oracle Grid Infrastructure安装 从Oracle Grid Infrastructure 12 ...
- Android—将Bitmap图片保存到SD卡目录下或者指定目录
直接上代码就不废话啦 一:保存到SD卡下 File file = new File(Environment.getExternalStorageDirectory(), System.currentT ...
- Fiddler-http检测调试工具
Fiddler是最强大最好用的Web调试工具之一,它能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据. 使用Fiddler无论对开发还是测试来说,都有很大 ...
- day11有参装饰器,无参装饰器
今日内容 1.有参装饰器 2.无参装饰器 什么是装饰器? 用来为被装饰对象添加新功能的工具. 注:装饰器可以是任意可调用对象,被装饰对象也可以是任意可调用对象. 为何要用装饰器? 开放封闭原则:对修改 ...
- mysql中left join中的on条件 和 where条件区别
需要知道sql中关键字的执行顺序. FROM-> ON->JOIN-> WHERE->GROUP BY-> HAVING->SELECT-> DISTINCT ...
- # 《网络对抗》Exp1 PC平台逆向破解20155337祁家伟
<网络对抗>Exp1 PC平台逆向破解20155337祁家伟 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会 ...
- Latex数学公式编写
小叙闲言 一直想用latex来编辑文档,但是没有需求,所以也没有去学习一下,但是最近由于要大量敲数学公式,有了latex数学公式的需求,所以来稍稍总结学习一下 1.在MathType中编写Latex数 ...
- [FQ]Tor + Chrome + PAC 尝试 FQ
记录一次比较成功的FQ经历 1.从Tor官网下载最新的Tor browser,速度较慢可以从文末给出的链接中下载. 2.安装Tor browser. 3. Tor网络设置 3.1 那个描述与你的情况最 ...