| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:JAVA用BigInteger超时啊~~~~~~~~~怎么办,递归算法,难道真要写高精?In Reply To:JAVA用BigInteger超时啊~~~~~~~~~怎么办,递归算法,难道真要写高精? Posted by:slovx2 at 2010-04-14 19:08:42 f(n) = f(n-1)+2*f(n-2) 使用记忆化搜索+BigInteger 水过
import java.io.*;
import java.util.*;
import java.math.*;
public class Main {
//遞推公式:f(n) = f(n-1)+2*f(n-2)
//使用記憶化搜索
public static BigInteger[] data = new BigInteger[251];
public static BigInteger f(int n)
{
if(n==0) return BigInteger.valueOf(1);
if(n==1) return BigInteger.valueOf(1);
if(n==2) return BigInteger.valueOf(3);
if(data[n].compareTo(BigInteger.valueOf(-1))!=0)
return data[n];
data[n] = f(n-1).add(f(n-2).multiply(BigInteger.valueOf(2)));
return data[n];
}
public static void main(String[] args) {
int n;
Scanner in = new Scanner(System.in);
while(in.hasNextInt()){
for(int i=0;i<251;i++){
data[i] = BigInteger.valueOf(-1);
}
n = in.nextInt();
System.out.println(f(n));
}
}
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator