题目描述

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

输入描述:

  1. 输入包含多组数据,每组数据第一行包括三个整数 M1M20)、N1N20)和 K0K1000),用空格隔开;表示花生田的大小为 M * N,多多采花生的限定时间为 K个单位时间。
  2.  
  3. 紧接着 M 行,每行包括 N 个自然数 P0P500),用空格隔开;表示花生田里植株下花生的数目,并且除了0(没有花生),其他所有植株下花生的数目都不相同。

输出描述:

  1. 对应每一组数据,输出一个整数,即在限定时间内,多多最多可以采到花生的个数。

输入例子:

  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.  
  3. 对应代码:
  1. /*
  2. http://www.nowcoder.com/pat/2/problem/249
  3. author: ly 2016.6.19
  4. */
  5. #include<iostream>
  6. #include<stdio.h>
  7. #include<memory.h>
  8. #include<algorithm>
  9. using namespace std;
  10.  
  11. struct MAX
  12. {
  13. int value;
  14. int hang;
  15. int lie;
  16. }m[];
  17.  
  18. //规定降序排列
  19. bool cmp(const MAX &a,const MAX &b)
  20. {
  21. return a.value>b.value;
  22. }
  23.  
  24. int main()
  25. {
  26. int M,N,k;
  27.  
  28. while(scanf("%d%d%d",&M,&N,&k)!=EOF)
  29. {
  30. // cin>>M>>N; //花生田的大小
  31. // scanf("%d%d",&M,&N);
  32. // cin>>k; //限定时间
  33. // scanf("%d",&k);
  34.  
  35. //memset(m,0,sizeof(m));
  36. int v=,top=;
  37.  
  38. int i=,j=;
  39. for(i=;i<M;i++)
  40. for(j=;j<N;j++)
  41. {
  42. scanf("%d",&v);
  43. if(v!=)
  44. {
  45. m[top].value=v;
  46. m[top].hang=i+;
  47. m[top].lie=j+;
  48. top++;
  49. }
  50. }
  51.  
  52. //对于找到的数的大小进行排序
  53. sort(m,m+top,cmp);
  54.  
  55. //将路边看成一个节点 列与第一个最大子节点相同
  56. int x_l=;
  57. int y_l=m[].lie; //分x,y方向考虑
  58.  
  59. //开始采花生
  60. int sum=,count=;
  61.  
  62. //判断
  63. for(i=;i<top;i++)
  64. {
  65. //是否符合条件
  66. sum+=abs(m[i].hang-x_l);
  67. sum+=abs(m[i].lie-y_l);
  68.  
  69. sum++; //摘花生
  70. if(sum+m[i].hang>k)
  71. break;
  72.  
  73. x_l=m[i].hang;
  74. y_l=m[i].lie;
  75. count+=m[i].value;
  76.  
  77. }
  78.  
  79. printf("%d\n",count);
  80. }
  81.  
  82. return ;
  83. }

  日进一小步,月过一大步!!!加油~~

PAT-1001 采花生的更多相关文章

  1. PAT 1001 A+B 解题报告

    PAT 1001 A+B 代码链接:传送门 题目链接:传送门 题目简述: 给定两个值a,b: 范围-1000000 <= a, b <= 1000000: 按指定格式输出a+b的结果,例: ...

  2. PAT 1001 害死人不偿命的(3n+1)猜想 (15)(C++&JAVA&Python)

    1001 害死人不偿命的(3n+1)猜想 (15)(15 分) 卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把(3n+1)砍掉一半.这样一直反 ...

  3. 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 ...

  4. PAT 1001 A+B Fotmat

    源码 1001. A+B Format (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Calcula ...

  5. PAT 1001 Format

    problem 1001 A+B Format (20)(20 point(s)) Calculate a + b and output the sum in standard format -- t ...

  6. PAT——1001 害死人不偿命的(3n+1)猜想 (15)

    对给定的任一不超过1000的正整数n,简单地数一下,需要多少步(砍几下)才能得到n=1? 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值. 输出格式:输出从n计算到1需要的步数. 输入样例 ...

  7. PAT 1001 害死人不偿命的(3n+1)猜想

    1001 害死人不偿命的(3n+1)猜想 (15 分) 卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把 (3n+1) 砍掉一半.这样一直反复 ...

  8. PAT 1001. 害死人不偿命的(3n+1)猜想 (15)

    卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把(3n+1)砍掉一半.这样一直反复砍下去,最后一定在某一步得到 n=1.卡拉兹在1950年的世界 ...

  9. PAT 1001

    Calculate a + b and output the sum in standard format -- that is, the digits must be separated into ...

随机推荐

  1. 团队作业——Alpha冲刺 10/12

    团队作业--Alpha冲刺 冲刺任务安排 杨光海天 今日任务:编辑界面返回以及预览的intent实现 明日任务:未能按时间要求完成的失败总结 郭剑南 今日任务:优化图像预处理所有功能的函数代码,尝试与 ...

  2. Docker技术入门与实战 第二版-学习笔记-3-Dockerfile 指令详解

    前面已经讲解了FROM.RUN指令,还提及了COPY.ADD,接下来学习其他的指令 5.Dockerfile 指令详解 1> COPY 复制文件 格式: COPY  <源路径> .. ...

  3. RedHat 7.3 Oracle 12.2.0.1 RAC 安装手册(转)

    1  准备工作 1.1   关于GRID的一些变化 1.1.1  简化的基于映像的Oracle Grid Infrastructure安装 从Oracle Grid Infrastructure 12 ...

  4. Android—将Bitmap图片保存到SD卡目录下或者指定目录

    直接上代码就不废话啦 一:保存到SD卡下 File file = new File(Environment.getExternalStorageDirectory(), System.currentT ...

  5. Fiddler-http检测调试工具

    Fiddler是最强大最好用的Web调试工具之一,它能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据. 使用Fiddler无论对开发还是测试来说,都有很大 ...

  6. day11有参装饰器,无参装饰器

    今日内容 1.有参装饰器 2.无参装饰器 什么是装饰器? 用来为被装饰对象添加新功能的工具. 注:装饰器可以是任意可调用对象,被装饰对象也可以是任意可调用对象. 为何要用装饰器? 开放封闭原则:对修改 ...

  7. mysql中left join中的on条件 和 where条件区别

    需要知道sql中关键字的执行顺序. FROM-> ON->JOIN-> WHERE->GROUP BY-> HAVING->SELECT-> DISTINCT ...

  8. # 《网络对抗》Exp1 PC平台逆向破解20155337祁家伟

    <网络对抗>Exp1 PC平台逆向破解20155337祁家伟 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会 ...

  9. Latex数学公式编写

    小叙闲言 一直想用latex来编辑文档,但是没有需求,所以也没有去学习一下,但是最近由于要大量敲数学公式,有了latex数学公式的需求,所以来稍稍总结学习一下 1.在MathType中编写Latex数 ...

  10. [FQ]Tor + Chrome + PAC 尝试 FQ

    记录一次比较成功的FQ经历 1.从Tor官网下载最新的Tor browser,速度较慢可以从文末给出的链接中下载. 2.安装Tor browser. 3. Tor网络设置 3.1 那个描述与你的情况最 ...