示例#1
0
        static void Main(string[] args)
        {
            //Console.WriteLine(UglyNumber.GetnthUglyNumber(7));
            //Console.WriteLine(UglyNoWithDynamicProg.GetNthUglyNo(7
            //LongestIncreasingSubsequence.Test();

            //LISUsingArray.Test
            CoinChangeProblem.Test();
            Console.ReadLine();
        }
示例#2
0
        static void Main(string[] args)
        {
            int number    = 10;
            var fibonacci = new Fibonacci();

            Console.WriteLine("Recursive fibonacci of {0}: {1}", number, fibonacci.FibonacciRecursive(number));
            Console.WriteLine("Recursive fibonacci with Memoization of {0}: {1}", number, fibonacci.FibonacciMemoization(number));

            Console.WriteLine();

            int rows = 17, cols = 17;
            var gridTraveller = new GridTraveller();
            var gridPaths     = gridTraveller.TravelGrid(rows, cols);

            Console.WriteLine("Grid traveller ({0}, {1}) paths: {2}", rows, cols, gridPaths);
            var memoizedGridPaths = gridTraveller.TravelGridWithMemoization(rows, cols);

            Console.WriteLine("Grid traveller ({0}, {1}) paths: {2}", rows, cols, memoizedGridPaths);

            Console.WriteLine();

            var sumFinder = new PossibleSumFinder();
            int sum       = 7;

            int[] numbers = new[] { 5, 3, 4, 7 };
            Console.WriteLine("Sum: {0}; Nums: [5, 3, 4, 7]; Result: {1}", sum, sumFinder.Find(sum, numbers));
            Console.WriteLine("Sum: 275; Nums: [7, 14]; Result: {0}", sumFinder.Find(275, new int[] { 7, 14 }));
            Console.WriteLine("Sum: 275; Nums: [7, 14]; Result: {0}", sumFinder.FindWithEarlyReturn(275, new int[] { 7, 14 }));
            Console.WriteLine("Sum: 275; Nums: [7, 14]; Result: {0}", sumFinder.FindWithMemoization(275, new int[] { 7, 14 }));
            Console.WriteLine();

            var combinationSumFinder = new CombinationSumFinder();
            var result = combinationSumFinder.Find(7, new int[] { 5, 3, 4, 7 });

            var bestSumFinder = new BestSumFinder();
            var bestSumResult = bestSumFinder.Find(7, new int[] { 5, 3, 4, 7 });

            var stringConstructor = new StringConstructor();
            var canConstruct      = stringConstructor.CanConstruct("skateboard", new string[] { "bo", "rd", "ate", "t", "ska", "sk", "boar" });
            //var stringConstructor = new StringConstructor();
            //var canConstruct = stringConstructor.CanConstruct("skateboard", new string[] { "bo", "rd", "ate", "t", "ska", "sk", "boar" });
            var canConstruct2 = stringConstructor.CanConstruct("abcdef", new string[] { "ab", "abc", "cd", "def", "abcd" });
            var canConstruct3 = stringConstructor.CanConstruct("aaaaaaaaaaaaaaaaaaaaaaaaaw", new string[] { "a", "aa", "aaa", "aaaa", "aaaaa", "aaaaaa" });
            var canConstruct4 = stringConstructor.CanConstructWithMemoization("aaaaaaaaaaaaaaaaaaaaaaaaaw", new string[] { "a", "aa", "aaa", "aaaa", "aaaaa", "aaaaaa" });

            var stringWaysConstructor = new StringWaysConstructor();
            int waysNumber            = stringWaysConstructor.FindWaysToConstruct("abcdef", new string[] { "ab", "abc", "cd", "def", "abcd" });                                // 1
            int waysNumber2           = stringWaysConstructor.FindWaysToConstruct("aaaaaaaaaaaaaaaaaaaaaaaaaw", new string[] { "a", "aa", "aaa", "aaaa", "aaaaa", "aaaaaa" }); // 0
            int waysNumber3           = stringWaysConstructor.FindWaysToConstruct("enterapotentpot", new string[] { "a", "p", "ent", "enter", "ot", "o", "t" });               // 4
            var waysNumber4           = stringWaysConstructor.FindWaysToConstruct("skateboard", new string[] { "bo", "rd", "ate", "t", "ska", "sk", "boar" });                 // 0

            // Coin Change Problem
            var coinChangeProblem = new CoinChangeProblem();

            Console.WriteLine(coinChangeProblem.MinimumNumberOfCoinsToMakeChange(10, new List <long>()
            {
                2, 5, 3, 6
            }));
            Console.WriteLine(coinChangeProblem.MinimumNumberOfCoinsToMakeChangeTopDown(10, new List <long>()
            {
                2, 5, 3, 6
            }));
            Console.WriteLine(coinChangeProblem.NumberOfWaysCoinsToMakeChange(10, new List <long>()
            {
                2, 5, 3, 6
            }));
            Console.WriteLine(coinChangeProblem.NumberNumberOfWaysCoinsToMakeChangeTopDown(10, new List <long>()
            {
                2, 5, 3, 6
            }));
        }