Giải pháp lập trình cho các bài toán về Tổ hợp, Chuỗi, Quy hoạch động và Số học
A. Mua Vé Số (Buy Lottery Tickets)
Bài toán yêu cầu liệt kê tất cả các tổ hợp 6 số từ một danh sách các số nguyên đầu vào, với điều kiện là các số được chọn phải thỏa mãn tính chất tăng dần. Vì giới hạn của dữ liệu không quá lớn, chúng ta có thể sử dụng thuật toán tìm kiếm theo chiều sâu (DFS) kết hợp với kỹ thuật quay lui (backtracking) để giả ...
Đăng vào ngày 22 tháng 6 lúc 18:06
Giải bài tập thi lập trình
Bài A: Chọn số may mắn
Áp dụng thuật toán tìm kiếm theo chiều sâu (DFS) để sinh các tổ hợp số thỏa mãn điều kiện. Điểm chú ý là cần thêm lệnh return khi kết thúc quá trình đệ quy:
#include <bits/stdc++.h>
using namespace std;
int numbers[100], selected[10], visited[100];
int total;
void generate(int depth) {
if (depth > 6) {
...
Đăng vào ngày 15 tháng 6 lúc 00:52
Bài toán xử lý chuỗi và số học trong kỳ thi ACM/ICPC khu vực Thanh Đảo 2017
Chuỗi bao trùm
Cho danh sách các chuỗi, xác định xem có tồn tại một chuỗi chứa tất cả các chuỗi còn lại như chuỗi con hay không. Nếu có, in ra chuỗi đó.
Giải pháp: Chuỗi dài nhất là ứng viên duy nhất. Duyệt qua từng chuỗi khác để kiểm tra xem nó có xuất hiện trong chuỗi dài nhất hay không bằng hàm tìm kiếm hoặc thuật toán KMP.
Xem mã dùng hàm ...
Đăng vào ngày 2 tháng 6 lúc 23:45
Tối ưu giá trị qua phép trừ và lấy dư, xử lý xâu đối xứng, đếm cạnh có tổng trọng số nguyên tố, và bài toán tổ hợp với tiền tố
Bài A: Tối ưu giá trị cuối cùng sau dãy phép toán
Cho một mảng gồm n số nguyên phân biệt. Ta được thực hiện hai loại thao tác:
Phép trừ: chọn hai phần tử x, y và thay bằng x - y.
Phép lấy dư: chọn hai phần tử x, y và thay bằng x % y.
Mục tiêu là thu được giá trị lớn nhất có thể sau khi thực hiện đúng n-1 thao tác.
Nhận xét:
Với phép tr ...
Đăng vào ngày 1 tháng 6 lúc 22:13
Các bài toán thuật toán cơ bản và kỹ thuật xử lý trong ngôn ngữ C
Phân loại cấp độ điểm số bằng cấu trúc Switch-Case
Để phân loại điểm số thành các cấp độ (A, B, C, D, F), chúng ta có thể thực hiện phép chia nguyên điểm số cho 10. Kết quả của phép chia này sẽ được đưa vào hàm switch để xác định giá trị trả về tương ứng. Lưu ý rằng trong cấu trúc switch, lệnh break đóng vai trò cực kỳ quan trọng. Nếu thiếu bre ...
Đăng vào ngày 17 tháng 5 lúc 01:56