KeyFC欢迎致辞,点击播放
资源、介绍、历史、Q群等新人必读
KeyFC 社区总索引
如果你找到这个笔记本,请把它邮寄给我们的回忆
KeyFC 漂流瓶传递活动 Since 2011
 

论坛里有会PASCAL的吗?帮个忙

[ 5821 查看 / 19 回复 ]

program mouse;
  var
    a,d:array[1..1500,1..1500]of longint;
    b,c:array[1..1000]of longint;
    n,i,t,max,j,m,q:longint;
  begin
    readln(n);
    for i:=1 to n do
      read(b);
    readln;
    for i:=1 to n do
      read(c);
    {for i:=1 to n-1 do
      for j:=i+1 to n do
        if b>b[j] then
          begin
            t:=b;
            b:=b[j];
            b[j]:=t;
            t:=c;
            c:=c[j];
            c[j]:=t;
          end;}
    for i:=1 to n do
      begin
        a[b,c]:=c;
        d[b,c]:=d[b,c]+1;
      end;
    i:=0;
    while i<n do
      begin
        i:=i+1;
        t:=i;
        m:=0;
        for j:=100 downto 1 do
          if d[i,j]>=1 then
            begin
              q:=j;
              break;
            end;
          while t>0 do
            begin
              if d[i,j]>=1 then
                begin
                  m:=m+a[i,j];
                  t:=t-1;
                  d[i,j]:=d[i,j]-1;
                end
                else j:=j-1;
            end;
          if m>=(max+a[i,q])
            then max:=m
            else max:=max+a[i,q];
      end;
    writeln(max);
  end.

为啥会溢出?


PS:我承认这题本身做法就不一定对
PS2:这年头貌似PASCAL只有初中高中的竞赛用用了
最后编辑临终之梦 最后编辑于 2008-07-16 11:34:56
分享 转发
TOP

回复:论坛里有会PASCAL的吗?帮个忙

for j:=100 downto 1

这是啥?

PS:变量名好囧,等下仔细看看……


试验了一下……根本编译不了=v=b

很好奇你怎么能出现over range的问题,TP只有too large,囧

你搞了2个longint大数组 1500*1500*4byte*2/1024=17578k,TP静态数据空间只有64k,怎么能装得下。。。

如果用的是FP或者DELPHI =  =,检查后面的语法错误吧,囧
最后编辑粘土火星 最后编辑于 2008-07-16 10:26:00
AJI,舰狗
TOP

回复:论坛里有会PASCAL的吗?帮个忙

是 for j:=100 downto 1 do 的说
TOP

回复:论坛里有会PASCAL的吗?帮个忙

什么题=v=?
AJI,舰狗
TOP

回复:论坛里有会PASCAL的吗?帮个忙

地鼠游戏(mouse.pas/in/out)
    王钢是一名学习成绩优异的学生,在平时的学习中,他总能利用一切时间认真高效地学习,他不但学习刻苦,而且善于经常总结、完善自己的学习方法,所以他总能在每次考试中得到优异的分数,这一切很大程度上是由于他是一个追求效率的人。
    但王钢也是一个喜欢玩的人,平时在学校学习他努力克制自己玩,可在星期天他却会抽一定的时间让自己玩一下,他的爸爸妈妈也比较信任他的学习能力和学习习惯,所以在星期天也不会象其他家长一样对他抓紧,而是允许他在星期天上午可以自由支配时间。
    地鼠游戏是一项需要反应速度和敏捷判断力的游戏。游戏开始时,会在地板上一下子冒出很多地鼠来,然后等你用榔头去敲击这些地鼠,每个地鼠被敲击后,将会增加相应的游戏分值。问题是这些地鼠不会傻傻地等你去敲击,它总会在冒出一会时间后又钻到地板下面去(而且再也不上来),每个地鼠冒出后停留的时间可能是不同的,而且每个地鼠被敲击后增加的游戏分值也可能是不同,为了胜出,游戏参与者就必须根据每个地鼠的特性,有选择地尽快敲击一些地鼠,使得总的得分最大。
这个极具挑战性的游戏王钢特别喜欢,最近他经常在星期天上午玩这个游戏,慢慢地他不但敲击速度越来越快(敲击每个地鼠所需要的耗时是1秒),而且他还发现了游戏的一些特征,那就是每次游戏重新开始后,某个地鼠冒出来后停留的时间都是固定的,而且他记录了每个地鼠被敲击后将会增加的分值。于是,他在每次游戏开始后总能有次序地选择敲击不同的地鼠,保证每次得到最大的总分值。
输入输出要求:
    输入文件mouse.in包含3行,第一行包含一个整数n(1<=n<=100)表示有n个地鼠从地上冒出来,第二行n个用空格分隔的整数表示每个地鼠冒出后停留的时间,第三行n个用空格分隔的整数表示每个地鼠被敲击后会增加的分值(<=100)。每行中第i个数都表示第i个地鼠的信息。
    输出文件mouse.out只有一行一个整数,表示王钢所能获得的最大游戏总分值。
样例:
mouse.in
5
5  3  6  1  4
7  9  2  1  5
mouse.out
24



你直接给我标程也可以-_-b
TOP

回复:论坛里有会PASCAL的吗?帮个忙

er... 楼主最好养成好习惯,用稍微有说明性的变量名。多敲两个字用不了多少时间,而且会降低差错的时间,特别是让别人帮你找错的时候(竞赛里面不少这种情况,俗话说不识庐山真面目...)。

存取一个数组的元素要加索引的吧,光 b c 没有意义...
d[b,c]:=d[b,c]+1; <--- 数据都没有初始化,没有意义+1还是等于没有意义
最后编辑Prz 最后编辑于 2008-07-16 11:23:11
飛べない翼に、意味はあるんでしょうか?
TOP

回复: 论坛里有会PASCAL的吗?帮个忙

原帖由 Prz 于 2008-7-16 11:22:00 发表
没有意义+1还是等于没有意义


这话好经典-_-b
TOP

回复:论坛里有会PASCAL的吗?帮个忙

嗯,另外,顶楼的算法好像是一种贪婪算法,那么应该是错的。
这道题不能用贪婪算法。
飛べない翼に、意味はあるんでしょうか?
TOP

回复: 论坛里有会PASCAL的吗?帮个忙

原帖由 粘土火星 于 2008-7-16 10:04:00 发表
for j:=100 downto 1

这是啥?

PS:变量名好囧,等下仔细看看……


试验了一下……根本编译不了=v=b

很好奇你怎么能出现over range的问题,TP只有too large,囧

你搞了2个longint大数组 1500*1500*4byte*2/1024=17578k,TP静态数据空间只有64k,怎么能装得下。


我用的FP,试着把longint改成integer了,还是不行
话说我原来开的是两个100*100的数组的说
最后编辑临终之梦 最后编辑于 2008-07-16 11:41:48
TOP

回复: 论坛里有会PASCAL的吗?帮个忙

原帖由 Prz 于 2008-7-16 11:30:00 发表
嗯,另外,顶楼的算法好像是一种贪婪算法,那么应该是错的。
这道题不能用贪婪算法。


所以我一开始就没说这算法是对的啊-_-b
只是想知道那里出问题了
TOP