From 9ffb022319823f20b649eed5e4254b8034900327 Mon Sep 17 00:00:00 2001 From: Shoaib Rayeen Date: Sun, 25 Nov 2018 16:23:46 +0530 Subject: [PATCH] Ignoring Space wastage in Top Down --- dynamic_programming_problems/fibonacci.cpp | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/dynamic_programming_problems/fibonacci.cpp b/dynamic_programming_problems/fibonacci.cpp index 74b5375..3e85a6a 100644 --- a/dynamic_programming_problems/fibonacci.cpp +++ b/dynamic_programming_problems/fibonacci.cpp @@ -8,22 +8,25 @@ //bottom up int fib1(int n) { - std::vector fib(n, 0); + // space optimization + std::vector fib(3, 0); if ( n == 0 || n == 1 ) { return 1; } fib[0] = 1; fib[1] = 1; for ( int i = 2; i < n; ++i ) { - fib[i] = fib[i-1] + fib[i-2]; + fib[2] = fib[1] + fib[0]; + fib[0] = fib[1]; + fib[1] = fib[2]; } - return fib[n-1]; + return fib[1]; } //top down -std::vector fib(1000, 0); -int fib2( int n ) { +// Ignoring Space wastage +int fib2( int n , int * fib) { if ( n == 0 ) { return 0; } @@ -38,6 +41,7 @@ int fib2( int n ) { } //leverage the fact we are just using last 2 term +// bottom up int fib3( int n ) { int a = 0; int b = 1; @@ -52,7 +56,11 @@ int fib3( int n ) { int main() { + int n; + std::cout << "\Enter n\t:\t"; + std::cin >> n; + int * fib = new int[n]; std::cout << "Demonstrating fibonacci term calculation:\n"; - std::cout << fib1(9) << " " << fib2(9) << " " << fib3(9) << std::endl; + std::cout << fib1(b) << " " << fib2(n , fib) << " " << fib3(n) << std::endl; return 0; }