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();*/ } }
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); }