Các Khái Niệm Cơ Bản Trong Lập Trình: Thiết Kế, Ngôn Ngữ, Cấu Trúc Dữ Liệu và Thuật Toán
Trong phát triển phần mềm, có hai phương pháp thiết kế phổ biến là thiết kế hướng chức năng và thiết kế hướng đối tượng.
Thiết kế Hướng Chức Năng và Hướng Đối Tượng
Thiết kế Hướng Chức Năng: Phương pháp này tập trung vào các tính năng hoặc chức năng mà hệ thống cần thực hiện. Trọng tâm chính là "hệ thống làm gì?". Nó phân rã hệ thống thành các ...
Đăng vào ngày 4 tháng 7 lúc 17:44
Codeforces 920 (div3)
Bài A: Tìm diện tích hình vuông
Bài toán yêu cầu tính diện tích của một hình vuông được xác định bởi bốn điểm. Do bốn điểm này tạo thành một hình vuông, khoảng cách giữa hai điểm kề nhau sẽ là cạnh của hình vuông. Do đó, chúng ta chỉ cần tìm một cặp điểm có cùng tọa độ x hoặc cùng tọa độ y, sau đó tính bình phương khoảng cách giữa chúng.
#inclu ...
Đăng vào ngày 4 tháng 7 lúc 15:31
Vấn đề mô phỏng trò chơi cá cược: Phân tích thuật toán
Mô tả bài toán
Bài toán "Trò chơi vui vẻ với cược nhỏ" mô phỏng một trò chơi đơn giản:
Ban đầu, hệ thống cung cấp số nguyên đầu tiên; người chơi sau đó đặt cược rằng số thứ hai sẽ lớn hơn hay nhỏ hơn số đầu tiên; sau khi người chơi đặt cược t token, hệ thống sẽ đưa ra số thứ hai. Nếu người chơi đoán đúng, hệ thống thưởng cho người chơ ...
Đăng vào ngày 30 tháng 6 lúc 17:50
Xóa nút trong danh sách liên kết (ngôn ngữ C)
Việc xóa nút trong danh sách liên kết thường yêu cầu xử lý trường hợp đặc biệt với nút đầu. Sử dụng nút giả (dummy node) giúp đơn giản hóa thao tác này.
1. Xóa phần tử trùng lặp trong danh sách có thứ tự
Bài toán: LeetCode 83
struct ListNode* removeDuplicates(struct ListNode* head) {
struct ListNode* prev = head;
if (!prev) return head; ...
Đăng vào ngày 30 tháng 6 lúc 08:05
Giải thích bài toán D và F trong cuộc thi AtCoder Beginner Contest 324
Bài toán D - Hoán vị số chính phương
Đề bài yêu cầu tìm số lượng các số chính phương có đúng n chữ số, sao cho tần suất xuất hiện của các chữ số trong số đó khớp với tần suất trong chuỗi đã cho.
Giải pháp hiệu quả là duyệt qua tất cả các số chính phương có thể có. Vì n tối đa là 13, nên ta chỉ cần duyệt các cơ số từ 0 đến sqrt(10^13), tức là kh ...
Đăng vào ngày 29 tháng 6 lúc 00:09
Hướng dẫn Toàn diện về Bảng băm trong Python: Từ Cơ bản đến Thực tiễn
Bảng băm là một trong những cấu trúc dữ liệu mạnh mẽ nhất trong Python, cho phép lưu trữ dữ liệu dưới dạng cặp khóa-giá trị với độ phức tạp thời gian trung bình O(1) cho các thao tác chèn, tìm kiếm và xóa. Dự án gh_mirrors/al/algorithms trên GitHub cung cấp các triển khai và ứng dụng thực tế của bảng băm, thể hiện sự tinh tế và hiệu quả của cấu ...
Đăng vào ngày 28 tháng 6 lúc 18:46
Nguyên lý và Cấu trúc Cây Trịnh Sát
Cây trị sát là một cấu trúc dữ liệu hiệu quả để giải quyết bài toán về các điểm bắt buộc trong đồ thị có hướng.
Định nghĩa, Định lý và Quy ước
Giả sử có một "đỉnh nguồn" \(s\) làm điểm xuất phát.
Giả sử tất cả các đỉnh được đánh số thứ tự theo thứ tự duyệt DFS của chúng.
Định nghĩa \(u\) "trị sát" \(v\) có nghĩa là nếu muốn ...
Đăng vào ngày 28 tháng 6 lúc 09:24
Bài Toán Về Tổng Các Chữ Số Và Thao Tác Trên Túi Bóng
Tổng Các Chữ Số Kế Tiếp
Ý Nghĩa Bài Toán
Xác định liệu có tồn tại số \(m\) sao cho tổng các chữ số của \(m+1\) lớn hơn tổng các chữ số của \(m\) đúng 1 đơn vị.
Mã Ví Dụ
Xem mã nguồn
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAX = 500005;
void kiemTra()
{
ll a, b;
cin >> a >> b;
...
Đăng vào ngày 27 tháng 6 lúc 19:07
Thư viện STL C++: Các thuật toán phổ biến và ứng dụng
1. Thuật toán không thay đổi cấu trúc dãy
Các thuật toán trong nhóm này duyệt qua dữ liệu mà không làm thay đổi thứ tự hay giá trị của các phần tử trong container.
1.1 Tìm kiếm với find và find_if
find(begin, end, value): Trả về con trỏ lặp đến lần xuất hiện đầu tiên của value, nếu không thấy thì trả về end.
find_if(begin, end, pred): ...
Đăng vào ngày 27 tháng 6 lúc 16:48
Thực hành thuật toán tuần thứ bảy | 454. Tổng bốn số II, 383. Thư đòi nợ, 15. Ba số tổng bằng 0, 18. Bốn số tổng bằng mục tiêu
Các bài tập hôm nay
454. Tổng bốn số II
Liên kết bài tập: 454. Tổng bốn số II - LeetCode
Phân tích: Nếu không dùng bảng băm (hashmap), phương pháp brute-force với bốn vòng lặp sẽ dẫn đến thời gian chạy quá lâu. Trong bài trước, khi giải bài 242. Kiểm tra chuỗi anagram - LeetCode, ta đã sử dụng một bảng băm để cộng và trừ giá trị. Trong bài 349. ...
Đăng vào ngày 25 tháng 6 lúc 20:40