What
sort of data structures might be relevant to you: trees, heaps, graphs? What is
the running time of the algorithm? All of this is fine if it helps you discover
an acceptably efficient algorithm to solve your problem.
Your
algorithm can solve small problems reasonably efficiently (e.g., n _ 20), and
you can count the running time and bounded by asymptotic notations but for the
really large problems you want to solve, your algorithm will never terminates.
When you analyze its running time, you realize that it is running in
exponential time, perhaps 2n or n! or worse!.
By
the end of 60’s, there was great success in finding efficient solutions too
many combinatorics problems. But there was also a growing list of problems for
which there seemed to be no known efficient algorithmic solutions.