Thuật toán Đếm Gạch Đen Bằng DFS

Mô tả vấn đề Có một căn phòng hình chữ nhật được lát bằng các viên gạch vuông màu đen và đỏ. Bạn đứng trên một viên gạch đen và chỉ có thể di chuyển đến các viên gạch đen khác nằm liền kề (trên, dưới, trái, phải). Hãy viết chương trình để tính tổng số viên gạch đen bạn có thể đi đến. Định dạng đầu vào Đầu vào bao gồm nhiều bộ dữ liệu. Mỗi bộ ...

Đăng vào ngày 30 tháng 6 lúc 11:40

Bài toán về cấu trúc cây và giải thuật

P2015 Cây nhị phân táo (f_{u,i}) thể hiện giá trị lớn nhất khi giữ lại i cạnh trong cây con gốc tại u. (f_{u,i}=max{f_{v,j}+f{u,i-j-1}+w}) #include<cmath> #include<queue> #include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #include<algorithm> #define maxn 210 #define maxm 300000 #def ...

Đăng vào ngày 28 tháng 6 lúc 22:47

Ôn tập thi thử 20260418: Tổng hợp các bài toán và lời giải

A - Đổi mật khẩu Bài toán cơ bản, chỉ cần thống kê và mô phỏng là ra. Chi tiết không cần bàn thêm. #include <bits/stdc++.h> using namespace std; int T, n, a, b, c, A, B, C; string s; int main() { cin >> T; while (T--) { cin >> s; n = s.size(); s = " " + s; a = b = c = A = B = C = 0; for ...

Đăng vào ngày 25 tháng 6 lúc 01:04

Các Khái Niệm Cơ Bản Về Đồ Thị và Tìm Kiếm Theo Chiều Sâu

Lý Thuyết Đồ Thị Phân Loại Đồ Thị Đồ thị vô hướng: Cạnh không có hướng xác định Đồ thị có hướng: Cạnh xác định chiều đi giữa các đỉnh Đồ thị có trọng số: Cạnh mang giá trị trọng lượng Bậc Đỉnh Vô hướng: Số cạnh nối với đỉnh Có hướng: Bao gồm bậc vào (số cạnh hướng tới) và bậc ra (số cạnh đi ra) Tính Liên Thông Đồ thị liên thô ...

Đăng vào ngày 24 tháng 6 lúc 04:20

Luyện Tập Cơ Bản Thuật Toán Mùa Đông NowCoder 1

Luyện Tập Mùa Đông NowCoder - Phần 1 Dễ A-Tìm Kiếm DFS #include <bits/stdc++.h> using namespace std; const int N = 1e6 + 10; #define int long long void giai() { int n; cin >> n; string s; cin >> s; map<char, bool> mapD, mapDCap; bool coD = false, coDCap = false; for(int i = 0; ...

Đăng vào ngày 23 tháng 6 lúc 01:44

Ứng dụng của đồ thị – Đồ thị liên thông

Input 2 4 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 7 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 1 0 Output Yes No Bài toán này yêu cầu kiểm tra xem một đồ thị có hướng có phải là đồ thị liên thông không. Để làm điều này, chúng ta có thể sử dụng thuật toán DFS hoặc BFS. Trong ví dụ này, tôi ...

Đăng vào ngày 23 tháng 6 lúc 00:53

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

Các Thuật Toán Duyệt và Xử Lý Cây Nhị Phân

Duyệt Tiền Thứ Tự class GiảiPháp { void duyetTruoc(Đỉnh gốc, List<Integer> kq) { if (gốc == null) return; kq.add(gốc.val); duyetTruoc(gốc.trái, kq); duyetTruoc(gốc.phải, kq); } public List<Integer> duyetTienTu(Đỉnh gốc) { List<Integer> kq = new ArrayList(); duyet ...

Đăng vào ngày 19 tháng 6 lúc 02:03

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

Giải các bài toán từ kỳ thi ABC358

Bài A Đọc hai chuỗi s và t. Nếu s là "AtCoder" và t là "Land", in ra "Yes", ngược lại in "No". Xem mã nguồn #include <bits/stdc++.h> using namespace std; int main() { string x, y; cin >> x >> y; if (x == "AtCoder" && y == "Land") cout n >> duration; vector<int> ready(n); for (int i = 0; i < n; ++i) ...

Đăng vào ngày 13 tháng 6 lúc 16:00