public void GetNumberOfWaystoClimbStairsWithkAndblocklist_Test()
        {
            //Given
            var k = 3;
            DynamicProgramming2 d = new DynamicProgramming2();

            //When
            //Then
            Assert.Equal(2, d.GetNumberOfWaystoClimbStairs(7, k, new int [] { 1, 3, 4 }));
        }
        public void MinimumNumberOfJumpstoReachEnd_Test1()
        {
            //Given
            var arr = new int [] { 1, 3, 5, 8, 9, 2, 6, 7, 6, 8, 9 };
            DynamicProgramming2 dp = new DynamicProgramming2();
            //When
            var result = dp.MinimumNumberOfJumpstoReachEnd(arr);

            //Then
            Assert.Equal(3, result);
        }
        public void GetNumberOfWaystoClimbStairs_Test()
        {
            //Given
            DynamicProgramming2 d = new DynamicProgramming2();

            //When
            //Then
            Assert.Equal(2, d.GetNumberOfWaystoClimbStairs(2));
            Assert.Equal(5, d.GetNumberOfWaystoClimbStairs(4));
            Assert.Equal(34, d.GetNumberOfWaystoClimbStairs(8));
        }
        public void GetNumberOfWaystoClimbStairsWithk_Test()
        {
            //Given
            var k = 2;
            DynamicProgramming2 d = new DynamicProgramming2();

            //When
            //Then
            Assert.Equal(2, d.GetNumberOfWaystoClimbStairs(2, k));
            Assert.Equal(5, d.GetNumberOfWaystoClimbStairs(4, k));
            Assert.Equal(34, d.GetNumberOfWaystoClimbStairs(8, k));
        }
        public void MaxSubArrayRepeatedConcate()
        {
            //Given
            var a = new int[] { -1, 10, 20 };
            var k = 2;
            DynamicProgramming2 d = new DynamicProgramming2();
            //When
            var result = d.MaxSubArrayKTimes(a, k);

            //Then
            Assert.Equal(59, result);
        }
        public void GetMinValuePathToReachMN()
        {
            //Given
            var arr = new int [3] [];

            arr [0] = new int [] { 1, 2, 3 };
            arr[1]  = new int [] { 4, 8, 2 };
            arr[2]  = new int [] { 1, 5, 3 };
            DynamicProgramming2 dp = new DynamicProgramming2();
            //When
            var result = dp.GetMinValuePathToReachMN(arr, 3, 3);

            //Then
            Assert.Equal(8, result);
        }