public void TestFindSubsetsInDupList() { var nums = new List <int> { 2, 1, 2, 2 }; var results = RecursiveBacktracking.FindSubsetsInDupList(nums); Assert.AreEqual(8, results.Count); Assert.IsTrue(RecursiveBacktracking.ContainsSubset(results, new List <int>())); Assert.IsTrue(RecursiveBacktracking.ContainsSubset(results, new List <int> { 1 })); Assert.IsTrue(RecursiveBacktracking.ContainsSubset(results, new List <int> { 1, 2 })); Assert.IsTrue(RecursiveBacktracking.ContainsSubset(results, new List <int> { 1, 2, 2 })); Assert.IsTrue(RecursiveBacktracking.ContainsSubset(results, new List <int> { 1, 2, 2, 2 })); Assert.IsTrue(RecursiveBacktracking.ContainsSubset(results, new List <int> { 2 })); Assert.IsTrue(RecursiveBacktracking.ContainsSubset(results, new List <int> { 2, 2 })); Assert.IsTrue(RecursiveBacktracking.ContainsSubset(results, new List <int> { 2, 2, 2 })); }
public void TestFindSubsetsWithTargetSum() { var nums = new List <int> { 10, 1, 2, 7, 6, 1, 5 }; var results = RecursiveBacktracking.FindSubsetsWithTargetSum(nums, 8); Assert.IsTrue(RecursiveBacktracking.ContainsSubset(results, new List <int> { 1, 7 })); Assert.IsTrue(RecursiveBacktracking.ContainsSubset(results, new List <int> { 1, 2, 5 })); Assert.IsTrue(RecursiveBacktracking.ContainsSubset(results, new List <int> { 6, 2 })); Assert.IsTrue(RecursiveBacktracking.ContainsSubset(results, new List <int> { 1, 1, 6 })); }