So I just went back and parsed the math in this exercise into C# types:
Given
List<int> S: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ..., n]
List<List<int>> C: [[1, 3, 4, 6], [4, 6, 8], [6, 8, 9, 10, 11], [10, 11] ...]
with the assumption that S is the union of all sets in C. This statement means that you'll have to build up S from C by concatenation, and it most probably allows something for the optimization.
The result must be of type List<List<int>>. Each list of the result, which is a hitting set, must contain at least one element from each List in C.
My Solution Plan If Ever
If I will ever attack this problem, I would start by removing the duplicates from each element of the lists.
Example: If we had: C = [[1], [1, 2, 3], [1, 4, 5]], the hitting sets for it would be the same for the following set of sets:
[[1], [2, 3], [4, 5]].
The rest is a matter of combinations, nested under a mandatory pass through of each of the resulting nonempty sets.