Kỹ thuật lập trình C qua các bài toán thuật toán và cấu trúc điều khiển

1. Chuyển đổi điểm số sang thang điểm chữ Hàm phanLoaiHocLuc thực hiện việc ánh xạ điểm số hệ 10 sang các ký tự xếp loại (A-E). Logic sử dụng cấu trúc switch-case dựa trên kết quả của phép chia nguyên cho 10. #include <stdio.h> char phanLoaiHocLuc(int diem) { char ketQua; if (diem < 0 || diem > 100) return 'F'; // Trình hợ ...

Đăng vào ngày 27 tháng 10 lúc 21:23

Phân tích và Giải pháp cho các Bài toán Thuật toán: Từ Thi đấu đến Quy hoạch động Nâng cao

Bài viết này khám phá các giải pháp cho một số vấn đề thuật toán, bao gồm các bài toán từ một cuộc thi lập trình và một số bài toán quy hoạch động phức tạp hơn. Các Bài Toán từ Cuộc Thi Lập Trình Bài Toán 1: Chia nhóm Bài toán yêu cầu tính số lượng nhóm tối thiểu cần thiết để chứa một số lượng phần tử nhất định, biết rằng mỗi nhóm có một sức ...

Đăng vào ngày 22 tháng 10 lúc 20:33

Đệ quy Trong Lập Trình: Nguyên Lý và Các Bài Toán Kinh Điển

Giới thiệu về Đệ quy Đệ quy là một khái niệm cơ bản và mạnh mẽ trong các thuật toán máy tính, thường được sử dụng để giải quyết các vấn đề có thể phân rã thành các bài toán con nhỏ hơn, tương tự nhau. Các thuật toán nổi tiếng như QuickSort và MergeSort là những ví dụ điển hình về ứng dụng của đệ quy. Mặc dù rất hiệu quả, việc viết mã đệ quy chí ...

Đăng vào ngày 15 tháng 10 lúc 04:55

Cấu trúc dữ liệu - Ngăn xếp

Khái niệm và nguyên lý cơ bản Ngăn xếp (stack) là một cấu trúc dữ liệu tuyến tính hoạt động theo nguyên tắc "vào sau - ra trước" (LIFO - Last In, First Out). Các thao tác chèn và xóa phần tử chỉ xảy ra ở một đầu gọi là đỉnh ngăn xếp (top). Đầu còn lại được gọi là đáy (bottom). Khi ngăn xếp không chứa phần tử nào, ta gọi là ngăn xếp rỗng. Ví dụ ...

Đăng vào ngày 3 tháng 10 lúc 12:13

Giải thuật mô phỏng cây đỏ đen trong C++

Tính chất của cây đỏ đen Mỗi nút là màu đỏ hoặc màu đen. Nút gốc luôn là màu đen. Nếu một nút là màu đỏ, thì cả hai nút con của nó phải là màu đen. Tất cả các đường đi từ một nút đến tất cả các nút lá đều chứa cùng số lượng nút đen. Tất cả các nút lá (nút rỗng) đều là màu đen. Nút của cây đỏ đen Trong cây đỏ đen, thay vì sử dụng "h ...

Đăng vào ngày 25 tháng 9 lúc 18:47

Tổng Quan Về Hệ Thống Tập Hợp Trong Lập Trình Java

Hệ sinh thái dữ liệu động trong Java Khi phát triển các ứng dụng phần mềm, việc lưu trữ nhóm dữ liệu là nhu cầu thường xuyên. Mặc dù mảng (Array) tồn tại từ lâu, nhưng chúng có hạn chế lớn về kích thước cố định, gây khó khăn khi không xác định được số lượng đối tượng cần xử lý lúc viết code. Để giải quyết vấn đề này, gói java.util cung cấp hệ t ...

Đăng vào ngày 22 tháng 9 lúc 15:13

Phân tích và tối ưu bài toán đếm số lượng cách đảo chuỗi con tạo ra số nhỏ hơn

Mô tả bài toán Cho một chuỗi ký tự số có độ dài n, chỉ bao gồm các chữ số từ 0 đến 9. Chuỗi này có thể được xem như một số thập phân có n chữ số. Nhiệm vụ là chọn ra một chuỗi con liên tục và đảo ngược nó (thực hiện tối đa một lần). Sau khi đảo ngược và đặt lại vào vị trí cũ, ta thu được một số mới. Yêu cầu đặt ra là đếm số lượng cách chọn chuỗ ...

Đăng vào ngày 3 tháng 9 lúc 12:48

Giải bài tập Codeforces Round 950 (Div. 3)

Chào buổi sáng! (00:50:13) Đây là lần thi khá thuận lợi: giải được tổng cộng 6 bài toán. A. Tạo Dữ Liệu Thử Sử dụng cấu trúc ánh xạ để đếm tần suất ký tự. #include<bits/stdc++.h> using namespace std; const int MAX_SIZE = 2e5+10; int test_cases, n, m; char input_array[MAX_SIZE]; unordered_map<char, int> frequency; int main() { ci ...

Đăng vào ngày 3 tháng 9 lúc 11:58

Triển khai Bảng băm (Hash Table) trong Python

Bảng băm, hay còn gọi là Hash Table, là một cấu trúc dữ liệu hiệu quả được sử dụng rộng rãi để lưu trữ các cặp khóa-giá trị (key-value) và cho phép truy cập dữ liệu với tốc độ rất nhanh. Nguyên lý hoạt động của nó dựa trên việc ánh xạ mỗi khóa đến một vị trí cụ thể trong một mảng (hoặc danh sách) thông qua một hàm băm. Về cơ bản, bạn có thể hìn ...

Đăng vào ngày 26 tháng 8 lúc 19:03

Thuật toán nhân hai số nguyên lớn dưới dạng chuỗi

Trong lập trình, việc xử lý các số nguyên cực lớn vượt quá giới hạn của kiểu dữ liệu long long thường yêu cầu chúng ta phải làm việc trực tiếp trên chuỗi (string). Bài toán "Multiply Strings" yêu cầu thực hiện phép nhân hai chuỗi số nguyên không âm mà không được sử dụng các thư viện hỗ trợ số lớn có sẵn hoặc ép kiểu trực tiếp toàn bộ chuỗi sang ...

Đăng vào ngày 23 tháng 8 lúc 14:02