Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- namespace AlgoAcademy.BigIntegerestCommonSubsequence
- {
- using System;
- using System.Numerics;
- using System.Linq;
- class Program
- {
- static void Main()
- {
- var firstSequenceLength = int.Parse(Console.ReadLine());
- var secondSequenceLength = int.Parse(Console.ReadLine());
- var firstSequence = new BigInteger[firstSequenceLength];
- var secondSequence = new BigInteger[secondSequenceLength];
- var allFirstNumbers = Console.ReadLine().Split(' ');
- var allSecondNumbers = Console.ReadLine().Split(' ');
- for (int i = 0; i < allFirstNumbers.Length; i++)
- {
- firstSequence[i] = BigInteger.Parse(allFirstNumbers[i]);
- }
- for (int i = 0; i < allSecondNumbers.Length; i++)
- {
- secondSequence[i] = BigInteger.Parse(allSecondNumbers[i]);
- }
- var buffer = new BigInteger[secondSequenceLength, firstSequenceLength];
- for (int i = 0; i < buffer.GetLength(0); i++)
- {
- for (int j = 0; j < buffer.GetLength(1); j++)
- {
- if (secondSequence[i] == firstSequence[j])
- {
- buffer[i, j] = 1;
- }
- if (i == 0 && j == 0)
- {
- continue;
- }
- if (i == 0)
- {
- buffer[i, j] = buffer[i, j] + buffer[i, j - 1];
- continue;
- }
- if (j == 0)
- {
- buffer[i, j] = buffer[i, j] + buffer[i-1, j];
- continue;
- }
- buffer[i, j] = buffer[i, j] + (new BigInteger[] { buffer[i - 1, j], buffer[i - 1, j - 1], buffer[i, j - 1] }).Max();
- }
- }
- //for (int i = 0; i < buffer.GetLength(0); i++)
- //{
- // for (int j = 0; j < buffer.GetLength(1); j++)
- // {
- // Console.Write(buffer[i,j]+" ");
- // }
- // Console.WriteLine();
- //}
- Console.WriteLine(buffer[secondSequenceLength-1,firstSequenceLength-1]);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement