Advertisement
Guest User

Untitled

a guest
Oct 27th, 2015
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.38 KB | None | 0 0
  1. namespace AlgoAcademy.BigIntegerestCommonSubsequence
  2. {
  3.     using System;
  4.     using System.Numerics;
  5.     using System.Linq;
  6.  
  7.  
  8.     class Program
  9.     {
  10.         static void Main()
  11.         {
  12.             var firstSequenceLength = int.Parse(Console.ReadLine());
  13.             var secondSequenceLength = int.Parse(Console.ReadLine());
  14.  
  15.             var firstSequence = new BigInteger[firstSequenceLength];
  16.             var secondSequence = new BigInteger[secondSequenceLength];
  17.  
  18.             var allFirstNumbers = Console.ReadLine().Split(' ');
  19.             var allSecondNumbers = Console.ReadLine().Split(' ');
  20.  
  21.             for (int i = 0; i < allFirstNumbers.Length; i++)
  22.             {
  23.                 firstSequence[i] = BigInteger.Parse(allFirstNumbers[i]);
  24.             }
  25.  
  26.             for (int i = 0; i < allSecondNumbers.Length; i++)
  27.             {
  28.                 secondSequence[i] = BigInteger.Parse(allSecondNumbers[i]);
  29.             }
  30.  
  31.             var buffer = new BigInteger[secondSequenceLength, firstSequenceLength];
  32.  
  33.             for (int i = 0; i < buffer.GetLength(0); i++)
  34.             {
  35.                 for (int j = 0; j < buffer.GetLength(1); j++)
  36.                 {
  37.                     if (secondSequence[i] == firstSequence[j])
  38.                     {
  39.                         buffer[i, j] = 1;
  40.                     }
  41.  
  42.                     if (i == 0 && j == 0)
  43.                     {
  44.                         continue;
  45.                     }
  46.  
  47.                     if (i == 0)
  48.                     {
  49.                         buffer[i, j] = buffer[i, j] + buffer[i, j - 1];
  50.                         continue;
  51.                     }
  52.  
  53.                     if (j == 0)
  54.                     {
  55.                         buffer[i, j] = buffer[i, j] + buffer[i-1, j];
  56.                         continue;
  57.                     }
  58.  
  59.                     buffer[i, j] = buffer[i, j] + (new BigInteger[] { buffer[i - 1, j], buffer[i - 1, j - 1], buffer[i, j - 1] }).Max();
  60.                 }
  61.             }
  62.  
  63.             //for (int i = 0; i < buffer.GetLength(0); i++)
  64.             //{
  65.             //    for (int j = 0; j < buffer.GetLength(1); j++)
  66.             //    {
  67.             //        Console.Write(buffer[i,j]+" ");
  68.             //    }
  69.             //    Console.WriteLine();
  70.             //}
  71.  
  72.             Console.WriteLine(buffer[secondSequenceLength-1,firstSequenceLength-1]);
  73.         }
  74.     }
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement