望麓自卑—湖南大学最具潜力的校园传媒

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4384|回复: 8

帮忙给这个程序减减肥

[复制链接]
发表于 2008-1-3 19:51:23 | 显示全部楼层 |阅读模式
import java.util.*;
public class fabi{
  public static void main(String[] args){
    Scanner cin=new Scanner(System.in);
    int n=cin.nextInt();
    int[] a=new int[n];
    for(int i=0;i<n;i++)
    {a=cin.nextInt();
     a=fabonacci(a);
    }
      for(int i=0;i<n;i++)
    {
     System.out.println(a);
    }
  }
  public static int fabonacci(int n){
    int re;
    if(n==0) re=0;else{if(n==1) re=1;else re=fabonacci(n-1)+fabonacci(n-2);  
    }
      return re;
  }
}

非常郁闷,运行时间2515MS,限制是2500,改了好几次,只是内存减少,时间还是不变..
发表于 2008-1-3 20:03:48 | 显示全部楼层
方法1 把递归改成递推
方法2 用个数组保存递归已经计算过的n的结果,当递归遇到已经保存过结果的n的时候,就直接返回保存的结果
 楼主| 发表于 2008-1-3 20:53:49 | 显示全部楼层
谢谢楼上,已经改好,用递推居然只用了109ms
yyy [s:237]
发表于 2008-1-3 20:55:07 | 显示全部楼层
改天有时间要好好研究下。
发表于 2008-1-4 12:50:21 | 显示全部楼层
import java.io.*;

public class Main {

  public static void main(String[] args) throws IOException {
    StreamTokenizer cin = new StreamTokenizer(
        new BufferedReader(new InputStreamReader(System.in)));
    PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
   
    cin.nextToken();
    int n = (int)cin.nval;
    if(n == 0) { out.println("0"); return; }
    if(n == 1) { out.println("1"); return; }
   
    int[] f = new int[n];
    f[0] = 0; f[1] = 1;
    out.println("0");
    out.println("1");
    for(int i = 2; i < n; ++i) {
      f = f[i-1]+f[i-2];
      out.println(f);
    }
   
    out.flush();

  }

}
发表于 2008-1-4 22:19:02 | 显示全部楼层
有时间和楼主好好研究研究java啊,这东西太多了。
 楼主| 发表于 2008-1-4 23:36:16 | 显示全部楼层
呵呵,非常乐意.楼上的高人如何联系类?
发表于 2008-4-20 19:30:29 | 显示全部楼层
JAVA???
看不懂啊
发表于 2009-11-14 03:37:28 | 显示全部楼层
这不是最基本的递归么,应该书上就有的吧。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

每日推荐上一条 /1 下一条

小黑屋|手机版|湖南大学望麓自卑校园传媒 ( 湘ICP备14014987号 )

GMT+8, 2024-11-23 19:32 , Processed in 0.481866 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表