Advertisement
riabcis

Untitled

Jun 4th, 2018
397
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.91 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Diagnostics;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7.  
  8. namespace a_dalis
  9. {
  10.     class Program
  11.     {
  12.         static Int64 abc = 0;
  13.        
  14.         const int m = 10;
  15.         const int n = 10;
  16.         const int o = 10;
  17.  
  18.         static void Main(string[] args)
  19.         {
  20.             int[] X = new int[m + 1];
  21.             int[] Y = new int[n + 1];
  22.             int[] Z = new int[o + 1];
  23.  
  24.             int[,,] memoize = new int[m+2, n + 2,o+2];
  25.             int i = 10;
  26.             int j = 9;
  27.             int k = 7;
  28.             repeat(i,j,k, X,Y,Z, memoize);
  29.             Console.WriteLine();
  30.             Console.ReadLine();
  31.         }
  32.  
  33.         static void repeat(int i, int j, int k, int[] X, int[] Y,int[] Z, int[,,] memoize)
  34.         {
  35.             initialize(memoize, X,Y,Z);
  36.  
  37.             Stopwatch stopwatch1 = new Stopwatch();
  38.             Stopwatch stopwatch2 = new Stopwatch();
  39.          
  40.             stopwatch1.Start();
  41.             Console.WriteLine("ATS:" + L1(i, j, k, X, Y, Z));
  42.             Console.WriteLine("Atliktu operaciju skaicius: " + abc.ToString());
  43.             abc = 0;
  44.             stopwatch1.Stop();
  45.             Console.WriteLine(stopwatch1.ElapsedMilliseconds);
  46.             Console.WriteLine();
  47.  
  48.             stopwatch2.Start();
  49.             Console.WriteLine("ATS: "+ tabulation(i, j, k, X, Y, Z,memoize));
  50.             Console.WriteLine("Atliktu operaciju skaicius: " + abc.ToString());
  51.             abc = 0;
  52.             stopwatch2.Stop();
  53.             Console.WriteLine(stopwatch2.ElapsedMilliseconds);
  54.  
  55.             Console.WriteLine();
  56.         }
  57.         static void initialize(int[,,] memoize,int[] X, int[] Y, int[] Z)
  58.         {
  59.             Random rnd = new Random();
  60.             Random rnd1 = new Random();
  61.             Random rnd2 = new Random();
  62.             for (int i = 0; i <= m; i++)
  63.             {
  64.                 X[i] = rnd.Next(0, 10);
  65.             }
  66.             for (int i = 0; i <= n; i++)
  67.             {
  68.                 Y[i] = rnd1.Next(0, 10);
  69.             }
  70.             for (int i = 0; i <= o; i++)
  71.             {
  72.                 Z[i] = rnd2.Next(0, 10);
  73.             }
  74.             for (int i=0;i<= m; i++)
  75.             {
  76.                 for(int j=0;j<=n; j++)
  77.                 {
  78.                     for(int z=0;z<= o;z++)
  79.                         memoize[i, j,z] = 0;
  80.                 }
  81.             }
  82.         }
  83.  
  84.         static int L1(int i,int j, int k, int[] X, int[] Y, int[] Z)
  85.         {
  86.             abc++;
  87.             if (X.Length == 0 || Y.Length == 0 || Z.Length == 0) return 0;
  88.             if (i <= 0 || j <= 0 || k <= 0) return 0;
  89.             if (X[i] == Y[j] && X[i] == Z[k]) return 1 + L1(i - 1, j - 1, k - 1, X, Y, Z);
  90.             return Math.Max(Math.Max(L1(i-1, j, k, X, Y, Z), L1(i, j-1, k, X, Y, Z)), L1(i, j, k-1, X, Y, Z));
  91.         }
  92.         static int tabulation(int i, int j, int k, int[] X, int[] Y, int[] Z, int[,,] memoize)
  93.         {
  94.             for(int a = 0; a <= m; a++)
  95.             {
  96.                 for(int b=0;b<= n; b++)
  97.                 {
  98.                     for(int c=0;c<= o; c++)
  99.                     {
  100.                         abc++;
  101.                         if(c==0 || b == 0 || a == 0)
  102.                         {
  103.                             memoize[a, b, c] = 0;
  104.                         } else if(X[a]==Y[b] && X[a] == Z[c])
  105.                         {
  106.  
  107.                             memoize[a, b, c] = memoize[a - 1, b - 1, c - 1] + 1;
  108.                         } else
  109.                         {
  110.                            // Console.WriteLine(a.ToString() + b.ToString() + c.ToString());
  111.                             memoize[a, b, c] = Math.Max(Math.Max(memoize[a-1, b, c], memoize[a, b-1, c]),memoize[a,b,c-1]);
  112.                         }
  113.  
  114.  
  115.                     }
  116.                 }
  117.             }
  118.             return memoize[i, j, k];
  119.         }
  120.     }
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement