Пример #1
0
        public void TestLIS()
        {
            for (int tests = 0; tests < 3; tests++)
            {
                Random r = new Random(tests);
                int[]  a = new int[20];
                for (int i = 0; i < a.Length; i++)
                {
                    a[i] = r.Next(0, 100);
                }

                int lis = Sequences.LongestIncreasingSubsequence(a);

                /*
                 * for (int i = 0; i < a.Length; i++)
                 * Console.Write(a[i] + " ");
                 * Console.WriteLine();
                 * for (int i = 0; i < lis.Length; i++)
                 * Console.Write(lis[i] + " ");
                 * Console.WriteLine();
                 * Console.WriteLine();*/
            }
        }
Пример #2
0
        public void TestNextPermutation()
        {
            Assert.IsFalse(Sequences.NextPermutation(new int[0]));
            Assert.IsFalse(Sequences.NextPermutation(new int[] { 7 }));

            var a = new int[8];

            for (int i = 0; i < a.Length; i++)
            {
                a[i] = i;
            }

            int[] previous = (int[])a.Clone();
            int   noPerm   = 1;

            while (Sequences.NextPermutation(a))
            {
                noPerm++;
                int g = 0;
                for (int i = 0; i < 8 && g == 0; i++)
                {
                    g = a[i] - previous[i];
                }
                Assert.IsTrue(g > 0);
                previous = (int[])a.Clone();
            }
            Assert.AreEqual(40320, noPerm);

            a      = new int[] { 7, 10, 10, 5, 12, 7, 10 };
            noPerm = 1;
            while (Sequences.NextPermutation(a))
            {
                noPerm++;
            }
            Assert.AreEqual(292, noPerm);
        }