Ưu đãi trong tuần: Nhập mã UD50 giảm 50k cho đơn từ 300k!
Trang chủ
Menu

Recursion, Backtracking and Dynamic Programming in Python

Đệ quy, Quay lui và Quy hoạch động trong Python

Đệ quy, Quay lui và Quy hoạch động trong Python

Học lập trình thi đấu, Đệ quy, Quay lui, Chia để trị và Quy hoạch động bằng Python

4.6
(931 đánh giá)
11,656 học viên
Giảng viên
Holczer Balazs
Phụ đề Việt chất lượng cao Phụ đề tiếng Anh Bán chạy Đánh giá cao
50.000đ 1.039.000đ -95%
✓ Xem giỏ hàng và thanh toán
Bao gồm phụ đề tiếng Việt, tiếng Anh
16.0 giờ video
142 bài giảng
37 bài quiz
17 bài coding
Truy cập vĩnh viễn
Học trên mọi thiết bị
Cập nhật: 31/05/2026

Bạn sẽ học được gì

Hiểu về đệ quy
Hiểu về quay lui
Hiểu về quy hoạch động
Hiểu về phương pháp chia để trị
Triển khai hơn 15 bài toán thuật toán từ đầu
Nâng cao kỹ năng giải quyết vấn đề và trở thành lập trình viên mạnh mẽ hơn

Yêu cầu

Kiến thức Python cơ bản

Đối tượng phù hợp

Khóa học này dành cho người mới chưa quen với các bài toán thuật toán hoặc sinh viên muốn ôn tập lại
Bất kỳ ai đang chuẩn bị phỏng vấn lập trình hoặc muốn cải thiện kỹ năng giải quyết vấn đề

Nội dung khóa học

15 phần • 133 bài giảng
1 Giới thiệu
1 Cài đặt Python
2 Cài đặt PyCharm
1 Bộ nhớ stack và heap là gì?
2 Mô phỏng bộ nhớ stack và heap
3 Đệ quy là gì (gọi hàm đệ quy)?
4 Triển khai đệ quy đầu và đệ quy đuôi
5 Đệ quy và bộ nhớ stack (tràn stack)
6 Tối ưu hóa đệ quy trong Python
7 Bài toán giai thừa - với đệ quy đầu
8 Bài toán giai thừa - trực quan hóa stack
9 Chuyển đệ quy đầu thành đệ quy đuôi
10 Bài toán số Fibonacci - với đệ quy đầu
11 Số Fibonacci - trực quan hóa bộ nhớ stack
12 Giải pháp số Fibonacci với đệ quy đuôi
13 Giải pháp đảo ngược chuỗi
14 Giới thiệu bài toán Tháp Hà Nội
15 Triển khai Tháp Hà Nội
16 Tháp Hà Nội - trực quan hóa stack
17 Giải pháp - giải quyết đệ quy bằng vòng lặp
18 Thuật toán Euclid là gì?
19 Triển khai thuật toán Euclid
20 Ôn lại đệ quy và vòng lặp
1 Tìm kiếm tuyến tính là gì?
2 Triển khai tìm kiếm tuyến tính
3 Giải pháp - tìm kiếm tuyến tính bằng đệ quy
4 Tìm kiếm nhị phân (logarit) là gì?
5 Triển khai tìm kiếm nhị phân
1 Giới thiệu thuật toán chọn lọc
2 Giới thiệu Quickselect - thuật toán Hoare
3 Trực quan hóa Quickselect
4 Triển khai Quickselect
5 Giải pháp - sắp xếp bằng chọn lọc
6 Vấn đề với pivot là gì?
7 Chọn lọc nâng cao - median of medians, introselect
8 Triển khai thuật toán median of medians
9 Thuật toán Introselect - sức mạnh của kết hợp thuật toán
10 Chọn lọc trực tuyến - bài toán thư ký
1 Biểu diễn nhị phân của số
2 Toán tử logic
3 Toán tử dịch bit
4 Tìm độ dài bit của một số nguyên
5 Kiểm tra số chẵn và lẻ
6 Bài toán nhân kiểu nông dân Nga
7 Giải pháp nhân kiểu nông dân Nga bằng đệ quy
1 Quay lui là gì?
2 Tìm kiếm vét cạn và quay lui
3 Giới thiệu bài toán N quân hậu
4 Cây tìm kiếm là gì?
5 Triển khai bài toán N quân hậu phần I
6 Triển khai bài toán N quân hậu phần II
7 Bài toán N quân hậu và trực quan hóa bộ nhớ stack
8 Làm thế nào kiếm 1 triệu đô la từ bài toán N quân hậu?
9 Giới thiệu đường đi Hamilton (và chu trình)
10 Minh họa chu trình Hamilton
11 Triển khai đường đi Hamilton phần I
12 Triển khai đường đi Hamilton phần II
13 Giải pháp - tìm chu trình Hamilton
14 Giới thiệu bài toán tô màu
15 Trực quan hóa bài toán tô màu
16 Triển khai bài toán tô màu
17 Giới thiệu bài toán mã đi tuần
18 Triển khai bài toán mã đi tuần phần I
19 Triển khai bài toán mã đi tuần phần II
20 Giới thiệu bài toán mê cung
21 Triển khai bài toán mê cung
22 Bài toán mê cung và trực quan hóa bộ nhớ stack
23 Giới thiệu Sudoku
24 Triển khai Sudoku phần I
25 Triển khai Sudoku phần II
26 Triển khai Sudoku phần III
27 Vấn đề với quay lui là gì?
1 Giới thiệu quy hoạch động
2 Giới thiệu số Fibonacci
3 Triển khai số Fibonacci
4 Giới thiệu bài toán cái túi (Knapsack)
5 Ví dụ bài toán cái túi
6 Bài toán cái túi với đệ quy (cây đệ quy)
7 Giải pháp - bài toán cái túi với đệ quy
8 Triển khai bài toán cái túi
9 Giới thiệu bài toán cắt thanh (Rod cutting)
10 Ví dụ bài toán cắt thanh
11 Triển khai bài toán cắt thanh
12 Giới thiệu bài toán tổng tập con (Subset sum)
13 Ví dụ bài toán tổng tập con
14 Triển khai bài toán tổng tập con
15 Bài toán mảng con lớn nhất (thuật toán Kadane)
16 Giới thiệu chuỗi con chung dài nhất (Longest common subsequence)
17 Triển khai chuỗi con chung dài nhất
18 Chuỗi con chung dài nhất với đệ quy (cây đệ quy)
1 Giới thiệu bài toán đóng thùng (Bin packing)
2 Triển khai bài toán đóng thùng
3 Bài toán đóng thùng - bài viết hữu ích
1 Phương pháp chia để trị là gì?
2 Ôn lại tìm kiếm nhị phân
3 Lý thuyết Merge sort
4 Triển khai Merge sort
5 Merge sort và trực quan hóa bộ nhớ stack
6 Giải pháp - sắp xếp các mục theo thứ tự giảm dần
7 Giới thiệu bài toán cặp điểm gần nhất phần I
8 Giới thiệu bài toán cặp điểm gần nhất phần II
9 Triển khai bài toán cặp điểm gần nhất
10 Cặp điểm gần nhất - bài viết hữu ích
1 Giới thiệu tìm kiếm vét cạn
2 Triển khai tìm kiếm vét cạn
3 Giới thiệu thuật toán Rabin-Karp
4 Triển khai thuật toán Rabin-Karp
5 Giới thiệu thuật toán Knuth-Morris-Pratt
6 Xây dựng bảng khớp một phần
7 Triển khai thuật toán Knuth-Morris-Pratt
8 Giới thiệu thuật toán Z
9 Minh họa thuật toán Z
10 Triển khai thuật toán Z
11 So sánh các thuật toán tìm kiếm chuỗi con
12 Ứng dụng của tìm kiếm chuỗi con
1 Giải pháp đảo ngược mảng tại chỗ
2 Giải pháp bài toán Palindrome
3 Giải pháp bài toán Anagram
4 Giải pháp bài toán đảo ngược số nguyên
5 Giải pháp tìm nút giữa trong danh sách liên kết
6 Tổng quan bài toán hứng nước mưa (Trapping rain water)
7 Lý thuyết bài toán hứng nước mưa
8 Giải pháp bài toán hứng nước mưa
1 Các bước tiếp theo
1 Cách đo thời gian chạy của thuật toán?
2 Minh họa lý thuyết độ phức tạp
3 Ký hiệu độ phức tạp - big (O)
4 Ký hiệu độ phức tạp - big Ω (omega)
5 Ký hiệu độ phức tạp - big (θ) theta
6 Thời gian chạy của thuật toán
7 Các lớp độ phức tạp
8 Phân tích thuật toán - vòng lặp
1 Tài liệu khóa học (slide và mã nguồn)

Giới thiệu khóa học

This course is about the fundamental concepts of algorithmic problems focusing on recursion, backtracking, dynamic programming and divide and conquer approaches. As far as I am concerned, these techniques are very important nowadays, algorithms can be used (and have several applications) in several fields from software engineering to investment banking or R&D.

Section 1 - RECURSION

  • what are recursion and recursive methods

  • stack memory and heap memory overview

  • what is stack overflow?

  • Fibonacci numbers

  • factorial function

  • tower of Hanoi problem

Section 2 - SEARCH ALGORITHMS

  • linear search approach

  • binary search algorithm

Section 3 - SELECTION ALGORITHMS

  • what are selection algorithms?

  • Hoare's algorithm

  • how to find the k-th order statistics in O(N) linear running time?

  • quickselect algorithm

  • median of medians algorithm

  • the secretary problem

Section 4 - BIT MANIPULATION PROBLEMS

  • binary numbers

  • logical operators and shift operators

  • checking even and odd numbers

  • bit length problem

  • Russian peasant multiplication

Section 5 - BACKTRACKING

  • what is backtracking?

  • n-queens problem

  • Hamiltonian cycle problem

  • coloring problem

  • knight's tour problem

  • maze problem

  • Sudoku problem

Section 6 - DYNAMIC PROGRAMMING

  • what is dynamic programming?

  • knapsack problem

  • rod cutting problem

  • subset sum problem

  • Kadane's algorithm

  • longest common subsequence (LCS) problem

Section 7 - OPTIMAL PACKING 

  • what is optimal packing?

  • bin packing problem

Section 8 - DIVIDE AND CONQUER APPROACHES

  • what is the divide and conquer approach?

  • dynamic programming and divide and conquer method

  • how to achieve sorting in O(NlogN) with merge sort?

  • the closest pair of points problem

Section 9 - Substring Search Algorithms

  • substring search algorithms

  • brute-force substring search

  • Z substring search algorithm

  • Rabin-Karp algorithm and hashing

  • Knuth-Morris-Pratt (KMP) substring search algorithm

Section 10 - COMMON INTERVIEW QUESTIONS

  • top interview questions (Google, Facebook and Amazon)

  • anagram problem

  • palindrome problem

  • integer reversion problem

  • dutch national flag problem

  • trapping rain water problem

Section 11 - Algorithms Analysis

  • how to measure the running time of algorithms

  • running time analysis with big O (ordo), big Ω (omega) and big θ (theta) notations

  • complexity classes

  • polynomial (P) and non-deterministic polynomial (NP) algorithms

In each section we will talk about the theoretical background for all of these algorithms then we are going to implement these problems together from scratch in Python.

Thanks for joining the course, let's get started!

Khóa học liên quan

Khám phá thêm các khoá học cùng chủ đề

Hiển thị tất cả khoá học Data Structures And Algorithms
Hiển thị tất cả khoá học Problem Solving
Hiển thị tất cả khoá học Python
Zalo
Tôi có thể tư vấn khoá học cho bạn 😊