回 帖 发 新 帖 刷新版面

主题:一道新加坡信息学竞赛试题(有兴趣的请给出解答顺带帮我解决一下问题)

大意:一跳虫从0开始,每次向前或向后跳n格(第n次跳跃),输入k值为共有0到k格,跳虫不能跳到小于0的地方,输出共有的方式:m,如果没有则输出0。.
 例:输入4;输出1;

回复列表 (共5个回复)

沙发

下列程序不知为何过不了编译。
program  hop;
  const
    a:array[1..2] of integer=(-1,1);
  var
    i,m,k:integer;
  procedure print;
    begin
     if l=0 then write(m);
       else write('0');
     end;
  procedure try(i:integer);
    var
      j,l:integer;
    begin
      if i>k and l=0 then begin inc(m);exit;end;
      for j:=1 to 2 do
        if 0<=l+a[j]*i
         then begin
              l:=l+a[j]*i;
             try(i+1);
             l:=l-a[j]*i;
         end;
      end;
  begin
    read(k);
    try(1);
  end.

板凳

显示:can't find unit system
     compilation aborted

3 楼

显示:can't find unit system
     compilation aborted

这是因为你用的是FPC 2.0, 你换turbo pascal试试.

另外你的程序没有定义变量l, 在try过程里定义的变量不能用在其它过程里.

if i>k and l=0 then begin inc(m);exit;end;
这一句应该这样写:
if (i>k) and (l=0) then begin inc(m);exit;end;

还有就是你根本没有调用print过程, 不知所云.

4 楼

被后生如此说真是失败阿,不过我以上却为错误,我忘了说一个很重要的不过的原因是我的软件没装好。不过谢谢阿!

5 楼


你的l没定义

我来回复

您尚未登录,请登录后再回复。点此登录或注册