Advertisement
vencinachev

Dynamic programming

Sep 7th, 2019
275
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.78 KB | None | 0 0
  1.   class Program
  2.     {
  3.        
  4.         static long[] numbersFib;
  5.        
  6.         static long Fib(int n)
  7.         {
  8.             if (numbersFib[n] == 0)
  9.             {
  10.                 numbersFib[n] = Fib(n - 1) + Fib(n - 2);
  11.             }
  12.  
  13.             return numbersFib[n];
  14.         }
  15.  
  16.         static long[] numbersTrib;
  17.         static long Tribonaci(int n)
  18.         {
  19.             if (numbersTrib[n] == 0)
  20.             {
  21.                 numbersTrib[n] = Tribonaci(n - 3) + Tribonaci(n - 2) + Tribonaci(n - 1);
  22.             }
  23.             return numbersTrib[n];
  24.         }
  25.  
  26.         static int[] dp;
  27.         static int Solve(int n)
  28.         {
  29.             if (n < 0)
  30.             {
  31.                 return 0;
  32.             }
  33.             if (n == 0)
  34.             {
  35.                 return 1;
  36.             }
  37.             if (dp[n] == -1)
  38.             {
  39.                 dp[n] = Solve(n - 1) + Solve(n - 3) + Solve(n - 5);
  40.             }
  41.             return dp[n];
  42.         }
  43.         static void Main(string[] args)
  44.         {
  45.             Console.Write("n = ");
  46.             int n = int.Parse(Console.ReadLine());
  47.  
  48.             numbersFib = new long[n + 1];
  49.             numbersFib[1] = 1;
  50.             numbersFib[2] = 1;
  51.             long fib = Fib(n);
  52.             Console.WriteLine($"Fib({n}) = {fib}");
  53.  
  54.             numbersTrib = new long[n + 1];
  55.             numbersTrib[1] = 1;
  56.             numbersTrib[2] = 1;
  57.             numbersTrib[3] = 2;
  58.             long trib = Tribonaci(n);
  59.             Console.WriteLine($"Trib({n}) = {trib}");
  60.  
  61.             dp = new int[n + 1];
  62.             for (int i = 0; i < dp.Length; i++)
  63.             {
  64.                 dp[i] = -1;
  65.             }
  66.             int count = Solve(n);
  67.             Console.WriteLine($"1-3-5 sum count for {n}: {count}");
  68.         }
  69.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement