/******************************************************************************
* Name:
* Login:
* Precept:
*
* Compilation: javac-introcs FibonacciDynProg.java
* Execution: java-introcs FibonacciDynProg N
* Compute the Nth Fibonacci number using dynamic programming.
*
* % java-introcs FibonacciDynProg 10
* 55
*
* % java-introcs FibonacciDynProg 20
* 6765
*
******************************************************************************/
public class FibonacciDynProg {
public static void main(String[] args) {
int N = Integer.parseInt(args[0]);
if (N < 1 || N > 92) {
throw new RuntimeException("N must be between 1 and 92");
}
long[] fib = new long[N+1];
// base cases
fib[0] = 0;
fib[1] = 1;
// bottom-up dynamic programming
for (int n = 2; n <= N; n++)
fib[n] = fib[n-1] + fib[n-2];
// print results
System.out.println(fib[N]);
}
}