Algorithmic Thinking: A Problem-Based Introduction

Zingaro, Daniel




A hands-on, problem-based introduction to building algorithms and data structures to solve problems with a computer.

Programming is about using a computer to solve problems, and algorithms and data structures are the building blocks of computer programs. For each problem that a programmer wants to solve, they employ an algorithm: a sequence of steps for solving the problem. Many books teach algorithms independently of specific problems, but this book uses careful explanations, examples, and arguments, rather than formal mathematics and proofs which make it difficult for you to connect what you are learning to what you can do with that learning. Algorithmic Thinking: A Problem-Based Introduction teaches you to use the best algorithms and data structures for a given situation by walking you through solving problems pulled from international programming competitions, such as how to determine whether snowflakes are unique; how to win a game in the minimum number of moves; how to find the number of ways to get to someone's house; how to escape a cave in as few steps as possible; and so on.

You'll tackle challenging topics like recursion, dynamic programming, graphs, greedy algorithms, heaps, hash tables, segment trees, and other data structures for efficiently handling data. The book contains no pseudocode: all code is written in C and is thoroughly explained in the text (C is a de facto programming language for programming competitions). By the end of the book, you should understand the importance of carefully working through a problem, and why it pays to organize data using data structures.





你將面對具有挑戰性的主題,如遞迴、動態規劃、圖形、貪婪演算法、堆積、雜湊表、區間樹和其他高效處理資料的資料結構。本書不包含偽代碼:所有程式碼都是用 C 語言編寫的,並在文本中詳細解釋(C 是一種在程式設計競賽中廣泛使用的程式語言)。通過閱讀本書,你應該能夠理解仔細思考問題的重要性,以及使用資料結構來組織數據的好處。


Dr. Daniel Zingaro is an award-winning Assistant Professor of Mathematical and Computational Sciences at the University of Toronto Mississauga, where he is well known for his uniquely interactive approach to teaching, and internationally recognized for his expertise in Active Learning.


Dr. Daniel Zingaro 是多倫多大學密西沙加分校的數學和計算科學助理教授,他以獨特的互動教學方法而聞名,並且在主動學習方面享有國際聲譽。