Giải bài toán tìm dãy giảm dài nhất và đếm số lượng dãy con
Mô tả bài toán
Cho một dãy số, tìm độ dài của dãy con giảm dài nhất (Longest Decreasing Subsequence - LDS). Sau đó, đếm số lượng các dãy con giảm có độ dài bằng độ dài này.
Phân tích
Câu hỏi thứ nhất - Tìm độ dài LDS
Chúng ta sử dụng mảng dp[i] để lưu độ dài của dãy giảm dài nhất kết thúc tại vị trí i. Mảng pos[k] lưu vị trí của phần tử cuố ...
Đăng vào ngày 4 tháng 6 lúc 00:30
Các thuật toán sắp xếp phổ biến trong Java mà lập trình viên nên nắm vững
Trong lập trình, việc hiểu và triển khai các thuật toán sắp xếp là kỹ năng thiết yếu. Dưới đây là 8 thuật toán tiêu biểu được phân loại theo cơ chế hoạt động, kèm theo minh họa code Java đã được viết lại để dễ đọc và tối ưu hơn.
1. Sắp xếp chèn trực tiếp
Ý tưởng: Duyệt từng phần tử, chèn nó vào đúng vị trí trong dãy đã sắp xếp phía trước.
publ ...
Đăng vào ngày 3 tháng 6 lúc 18:44
Cây K-D
Cây K-D là một cấu trúc dữ liệu có khả năng xử lý các vấn đề trong không gian đa chiều. Nó được tổ chức dưới dạng một cây nhị phân tìm kiếm, chia nhỏ không gian nhiều chiều thành các phần và đảm bảo rằng tọa độ của nút nào đó trên một trục nhất định sẽ lớn hơn tất cả các nút bên trái và nhỏ hơn tất cả các nút bên phải.
Xây dựng Cây K-D
Để xây d ...
Đăng vào ngày 3 tháng 6 lúc 17:34
Các bài toán xử lý danh sách liên kết trên LeetCode
21. Gộp hai danh sách liên kết đã sắp xếp
Cho hai danh sách liên kết tăng dần, hãy gộp chúng thành một danh sách mới cũng theo thứ tự tăng dần.
ListNode* merge(ListNode* a, ListNode* b) {
if (!a) return b;
if (!b) return a;
if (a->val < b->val) {
a->next = merge(a->next, b);
return a;
} else {
...
Đăng vào ngày 2 tháng 6 lúc 21:43
Cách Triển Khai Base64 Trong PHP Bằng Các Phép Toán Bit
Base64 là một phương pháp mã hóa nhị phân thành chuỗi văn bản ASCII, thường được dùng để truyền dữ liệu nhị phân qua các kênh chỉ hỗ trợ ký tự in được. Việc hiểu rõ cơ chế hoạt động — đặc biệt là cách xử lý bit — giúp lập trình viên không chỉ sử dụng hàm base64_encode() và base64_decode() một cách thụ động, mà còn chủ động kiểm soát, tùy chỉnh ...
Đăng vào ngày 2 tháng 6 lúc 01:21
Kỷ niệm giải Lianqiao 2025 Python B
Tôi là người mới học lập trình, bài viết này chỉ nhằm ghi lại suy nghĩ và mã nguồn của tôi trong cuộc thi lần này. Mong các bạn có kinh nghiệm hơn góp ý nếu có sai sót.
Đề bài A: Số lần tấn công
Thực hiện mô phỏng đơn giản với giá trị hp ban đầu là 2025, tính toán theo quy tắc modulo cho từng nhân vật. Kết quả thu được là 103.
hp = 2025
round_ ...
Đăng vào ngày 30 tháng 5 lúc 06:55
Kiểm tra số đối xứng bằng toán học không dùng chuỗi
Đề bài
Cho một số nguyên x, hãy xác định xem nó có phải là số đối xứng hay không. Một số được gọi là đối xứng nếu đọc từ trái sang phải hay từ phải sang trái đều cho cùng một giá trị. Ví dụ: 121 là số đối xứng, trong khi 123 thì không.
Ví dụ minh họa
Ví dụ 1:
Đầu vào: x = 121
Đầu ra: true
Ví dụ 2:
Đầu vào: x = -121
Đầu ...
Đăng vào ngày 30 tháng 5 lúc 00:48
Khảo sát Cấu trúc Dữ liệu Mảng và Thuật toán Cơ bản trong C
1. Khảo sát vùng nhớ của mảng một chiều và hai chiều
Đoạn mã dưới đây minh họa cách bộ nhớ được cấp phát cho các mảng trong C. Chúng ta sẽ kiểm tra kích thước thực tế占用 (sizeof) và địa chỉ của từng phần tử để xác định tính liên tục của vùng nhớ.
#include <stdio.h>
#define SIZE_1D 4
#define ROWS 2
#define COLS 4
void analyze_1d() {
...
Đăng vào ngày 27 tháng 5 lúc 21:43
Viết chương trình dòng lệnh tự động sinh bài tập toán tiểu học bốn phép tính
Mục tiêu của dự án là xây dựng một ứng dụng dòng lệnh trên nền tảng Java, có khả năng tự động tạo ngẫu nhiên các bài tập toán cơ bản dành cho học sinh tiểu học — bao gồm cộng, trừ, nhân, chia — với các ràng buộc phù hợp: kết quả không âm, số hạng nằm trong phạm vi cho trước, và đảm bảo tính duy nhất của từng biểu thức.
Chương trình được thiết ...
Đăng vào ngày 27 tháng 5 lúc 20:42
Giải chi tiết các bài toán Codeforces 918 (Div 4)
Problem A - Tìm phần tử khác biệt
Cho ba số nguyên a, b, c. Trong đó có hai số bằng nhau, cần tìm số còn lại.
Giải thuật: Kiểm tra các cặp bằng nhau, nếu a == b thì đáp án là c, tương tự cho các trường hợp khác.
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long test;
cin >> test;
while(test--)
{
...
Đăng vào ngày 27 tháng 5 lúc 09:40