Triển khai Tìm kiếm Nhị phân và Ứng dụng trong Thư viện STL Tiêu chuẩn
Trong các bài toán lập trình, thao tác tìm kiếm xuất hiện thường xuyên. Nếu sử dụng phương pháp tìm kiếm lực lượng (brute-force) với lượng dữ liệu lớn, chương trình sẽ gặp vấn đề về thời gian thực thi (ví dụ: với quy mô (10^5) thì độ phức tạp (O(n^2)) thường vượt quá thời gian cho phép, trong khi (O(nlogn)) thường chấp nhận được). Vì vậy, tìm k ...
Đăng vào ngày 1 tháng 6 lúc 23:28
Tổng hợp thuật toán STL C++ (Phần 1)
1. Thuật toán không thay đổi dãy
Các thuật toán này không làm thay đổi các phần tử trong container mà chúng thao tác.
1.1 find và find_if
find(begin, end, value): Tìm phần tử đầu tiên bằng value, trả về iterator (trả về
end nếu không tìm thấy).
find_if(begin, end, predicate): Tìm phần tử đầu tiên thỏa mãn predicate.
find_end(begin, end, sub ...
Đăng vào ngày 1 tháng 6 lúc 22:58
Giải bài toán ba lô 0-1 bằng quy hoạch động
Bài toán ba lô 0-1 là một bài toán tối ưu hóa tổ hợp kinh điển. Nó được phát biểu như sau: cho một tập hợp các vật phẩm, mỗi vật phẩm có một trọng lượng và một giá trị nhất định. Với một chiếc ba lô có sức chứa tối đa là W, làm thế nào để chọn ra các vật phẩm sao cho tổng giá trị của chúng là lớn nhất mà không vượt quá sức chứa của ba lô. Tên g ...
Đăng vào ngày 31 tháng 5 lúc 14:33
Bài thực hành số 3
Hoạt động 1:
1 #include <stdio.h>
2
3 char convert_score_to_grade(int point);
4
5 int main() {
6 int point;
7 char level;
8 while(scanf("%d", &point) != EOF) {
9 level = convert_score_to_grade(point);
10 printf("Điểm: %d, Xếp loại: %c\n\n", point, level);
11 }
12 ret ...
Đăng vào ngày 30 tháng 5 lúc 11:12
Cơ sở cấu trúc dữ liệu và thuật toán
Cơ sở cấu trúc dữ liệu và thuật toán
Mục lục- Cơ sở cấu trúc dữ liệu và thuật toán
Khoa học máy tính là gì?
Cách hiểu trực quan về thuật toán và ý nghĩa
Phân tích thuật toán là gì?
Tiêu chí đánh giá chương trình
Độ phức tạp thời gian biểu thức Big O T(n)=O(f(n))
Cấu trúc dữ liệu
Phân tích hiệu năng cấu trúc dữ liệu trong Python
Khoa học máy t ...
Đăng vào ngày 28 tháng 5 lúc 19:33
Lập trình động với C++
Giới thiệu về Lập trình động
Lập trình động (tiếng Anh: Dynamic programming, viết tắt là DP) là một phương pháp giải quyết các vấn đề phức tạp bằng cách chia nhỏ chúng thành các vấn đề con đơn giản hơn. Phương pháp này thường được áp dụng trong toán học, khoa học quản lý, khoa học máy tính, kinh tế học và sinh tin học. Lập trình động đặc biệt ...
Đăng vào ngày 28 tháng 5 lúc 06:03
Ghi Chú Thuật Toán: Các Kỹ Năng Cơ Bản
Duyệt Cây
function duyetTruoc(goc) {
if (goc) {
duyetPath.push(goc.giaTri);
duyetTruoc(goc.trai);
duyetTruoc(goc.phai);
}
}
function duyetGiua(goc) {
if (goc) {
duyetGiua(goc.trai);
duyetPath.push(goc.giaTri);
duyetGiua(goc.phai);
}
}
function duyetSau(goc) {
if (goc) {
...
Đăng vào ngày 27 tháng 5 lúc 04:05
Giải pháp Tối ưu Hệ số Độ dốc cho Thuật toán Quy hoạch Động
Giải thuật Chi tiết
Ví dụ Đầu vào
Chúng ta hãy xem một bài toán: Đóng gói đồ chơi.
Có \(n\) món đồ chơi, món đồ chơi thứ \(i\) có chiều dài \(c_i\). Yêu cầu xếp \(n\) món đồ chơi này theo thứ tự thành một hàng và chia thành một số đoạn. Chi phí của một đoạn \([l,r]\) là \((r-l+\sum_{i=l}^{r} c_i-L)^2\), hãy tìm cách chia đoạn có tổng chi phí n ...
Đăng vào ngày 27 tháng 5 lúc 02:27
Những Lưu Ý Quan Trọng Khi Lập Trình Thi Đấu
Tóm tắt
Luôn kiểm tra kích thước mảng sau khi viết xong bài. Nên khai báo lớn hơn 2-4 lần so với giới hạn đề bài. Đặc biệt chú ý khi có nhiều biến như N, M, K...
Phải đọc kỹ đề bài. Dữ liệu kiểm thử có thể có nhiều dạng khác nhau. Nếu đề không nói rõ không có cạnh song song hoặc tự vòng, hãy tự xử lý.
Xác định rõ dữ liệu đầu vào và ...
Đăng vào ngày 26 tháng 5 lúc 09:28
Tìm Chỉ Số Cân Bằng Trong Mảng
Dưới đây là một bài toán kiểm tra lập trình đơn giản với logic không quá phức tạp:
Một mảng A chỉ số bắt đầu từ 0 gồm N số nguyên được cho. Một chỉ số cân bằng của mảng này là bất kỳ số nguyên P sao cho 0 ≤ P < N và tổng các phần tử có chỉ số nhỏ hơn bằng tổng các phần tử có chỉ số lớn hơn, tức là:
A[0] + A[1] + ... + A[P−1] = A[P+1] + ... ...
Đăng vào ngày 23 tháng 5 lúc 06:45