回 帖 发 新 帖 刷新版面

主题:为何超时???

acm1005:http://acm.tongji.edu.cn/problem.php
如下:
var m:byte;
function  cow(n:byte):longint;
begin
   if n<5 then begin
     if n<4 then cow:=1
     else if n=4 then cow:=2;
   end else begin
     cow:=cow(n-1)+cow(n-3);
   end;
end;
begin
     while not eof do begin
       readln(m);
       writeln(cow(m));
     end;
end.
为什么说我超时了?[em18][em18][em18][em18]

回复列表 (共5个回复)

沙发

拉!话你知咯!发梦![em4][em3][em5][em1][em2][em7][em9][em9][em9][em9][em9][em9]

板凳

递归算法复杂度O(2^n),n=50你自己度量度量一下要算多少次。

3 楼

递归不行,得用递推

为了这个问题,让老师边剔牙边说了我一顿~~

4 楼

有 a[n] = a[n-1] + a[n-3] (n > 3), 剩余的你自己想去吧,按照求肥不拉叽数列的方法来求这个,只要 1-n 线性一次即可

5 楼

递归不行。。你递归里面已经推出了 a[n]=a[n-1]+a[n-3]
就循环推算就可以了

我来回复

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