花生采摘(pascal).docVIP

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
花生采摘(pascal)

花生采摘 题目描述   鲁宾逊先生有一只宠物猴,名叫多多。这天,他们两个正沿着乡间小路散步,突然发现路的告示牌上贴着一张小小的纸条:“欢迎免费品尝我种的花生!——熊字”。   鲁宾逊先生和多多都很开心,因为花生正是他们的最爱。在告示牌背后,路边真的有一块花生田,花生植株整齐地排列成矩形网格(如图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表示该植株下没有花生。 输出格式 输出包括一行,这一行只包含一个整数,即在限定时间内,多多最多可以采到花生的个数。 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 我的程序(pascal) program huanshl; type date=record x,y,d:longint; end; var a:array[1..40000]of date; k,i,j,m,n,q,t,w,p:longint; procedure qsort(l,r:longint); var i,j:longint; m,t:date; begin i:=l; j:=r; m:=a[(l+r)shr 1]; repeat while a[i].dm.d do inc(i); while a[j].dm.d do dec(j); if i=j then begin t:=a[i]; a[i]:=a[j]; a[j]:=t; inc(i); dec(j); end; until ij; if lj then qsort(l,j); if ir then qsort(i,r); end; begin read(m,n,k); p:=n*m; for i:=1 to p do begin read(a[i].d); if i mod n=0 then a[i].x:=trunc(i/n) else a[i].x:=trunc(i/n)+1; if ((i mod n)=0)then a[i].y:=n else a[i].y:=i mod n; end; if (n=1 )and( m=1) and (k3) then begin write(a[1].d);halt;end; qsort(1,p); t:=a[p].x+1; w:=a[p].d; if t+a[p].xk then begin write(0);halt;end; for i:=p-1 downto 1 do begin q:=t+abs(a[i].x-a[i+1].x)+abs(a[i].y-a[i+1].y)+1; if (q+abs(a[i].x))k then begin write(w);halt;end; if (q+abs(a[

文档评论(0)

f8r9t5c + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档