Completely revised, this text shows how to solve numerous classic and other interesting combinatorial problems. The authors take an easily accessible approach that introduces problems before leading into the theory involved. They present proofs of key results as well as numerous worked examples. This second edition includes seven new chapters th