-
Trình Thực Thi
Trình biên dịch Python Trình biên dịch C++ Trình biên dịch C Trình biên dịch Matplotlib Trình thông dịch Node.js Trình thông dịch PHP Trình biên dịch C# / .NET Trình biên dịch Rust Ruby Interpreter Trình biên dịch Java Trình biên dịch Go Trình biên dịch Kotlin Trình biên dịch Swift Trình biên dịch TypeScript
-
Học lập trình
Trung tâm học Python Ví dụ chạy được, NumPy, pandas và nhiều nội dung khác Trung tâm học C và C++ Con trỏ, bộ nhớ, STL và C++ hiện đại Trung tâm học C#C# cơ bản, OOP, LINQ, async và bài tập .NET Thuật toán Python Tìm kiếm, sắp xếp, đệ quy và trình mô phỏng O(n) Thuật toán C và C++ So sánh cách cài đặt bằng C và C++
- Thử thách
In a directed graph with nodes 0..n−1, a strongly connected component is a maximal group of nodes where every node can reach every other. Count the components (Kosaraju's or Tarjan's algorithm).
Implement count_scc(n, edges).
Input
n: The number of nodes. edges: Directed edges as [from, to].
Output
Return the number of components.
Ràng buộc
1 ≤ n ≤ 100,000; 0 ≤ edges ≤ 200,000
Ví dụ
Ví dụ 1
Đầu vào:
n = 5
edges = [
[0, 1],
[1, 2],
[2, 0],
[3, 4]
]
Kết quả mong đợi:
3
Giải thích
0, 1, 2 form a cycle (one component); 3 and 4 can't reach each other, so they are separate: 3.
Ví dụ 2
Đầu vào:
n = 3
edges = [
[0, 1],
[1, 0],
[1, 2],
[2, 1]
]
Kết quả mong đợi:
1
Giải thích
All three nodes reach each other: 1.
Tham khảo
-
Ví dụ 1 Chưa chạyĐầu vào:
n = 5 edges = [ [0, 1], [1, 2], [2, 0], [3, 4] ]Kết quả mong đợi:3Kết quả của bạn -
Ví dụ 2 Chưa chạyĐầu vào:
n = 3 edges = [ [0, 1], [1, 0], [1, 2], [2, 1] ]Kết quả mong đợi:1Kết quả của bạn
Có 4 kiểm tra ẩn sẽ chạy khi bạn nộp bài.
Trình biên dịch và gỡ lỗi C++ online
Viết, biên dịch, chạy và debug C++ online với breakpoint, xem biến và chạy từng bước bằng GDB trong Server mode.
🚀 2,389,603 tổng số lượt thực thi (98,208 trong tháng này)
Luyện C++ với thử thách lập trình
Giải các bài tập thực tế ngay trên trình soạn thảo này: chạy kiểm thử mẫu, nộp bài và nhận đánh giá code từ AI.
Khám phá theo chủ đề
Học C và C++ song song qua code thực tế, output, mô hình bộ nhớ, cấu trúc dữ liệu, thuật toán và các tính năng C++ hiện đại.
💻 Giới thiệu về Trình chạy C++ trực tuyến này
Trình chạy C++ CodeUtility cho phép bạn viết và chạy mã C++ trực tiếp trên trình duyệt - không cần cài đặt hay thiết lập trình biên dịch. Công cụ này sử dụng một sandbox an toàn hỗ trợ các tiêu chuẩn C++ từ C++11, C++14, C++17, cho đến phiên bản mới nhất.
Công cụ này dùng trình biên dịch C++ thực chạy trên đám mây để biên dịch và thực thi mã của bạn, đảm bảo hành vi chính xác và nhất quán giữa các phiên bản. Bạn có thể thoải mái thử nghiệm các khái niệm cốt lõi của C++ như biến, hàm, vòng lặp, cấu trúc điều kiện, và lập trình hướng đối tượng.
Dù bạn đang chuẩn bị phỏng vấn, học các tính năng C++ hiện đại, hay kiểm chứng logic thuật toán, Trình chạy C++ của CodeUtility mang đến môi trường đơn giản nhưng mạnh mẽ để chạy mã ngay lập tức trên mọi thiết bị.
Không chỉ là công cụ chạy mã
Sử dụng trình soạn thảo nhiều tệp, terminal thực thi biệt lập, thư viện riêng theo môi trường chạy, không gian làm việc lâu dài, tính năng chia sẻ và cộng tác theo thời gian thực ngay trong cùng một trình thực thi.
Cách sử dụng trình thực thi này?
Chọn môi trường chạy, mở hoặc tạo tệp, viết mã rồi nhấn Chạy. Kết quả xuất hiện trong terminal; người dùng đã đăng nhập có thể lưu tệp trong không gian làm việc, cài thư viện và cộng tác qua liên kết chia sẻ.
- Chọn phiên bản rồi chỉnh sửa tệp hiện tại hoặc mở một tệp khác trong không gian làm việc.
- Chạy mã, nhập dữ liệu trong terminal khi được yêu cầu và xem lại lịch sử chạy đã lưu.
- Sử dụng thư viện, công cụ không gian làm việc, chia sẻ và trò chuyện khi tác vụ cần nhiều hơn một đoạn mã.
💡 Cơ bản về C++ & các ví dụ bạn có thể thử ở trên
1. Khai báo biến và hằng số
C++ yêu cầu bạn khai báo kiểu của từng biến. Dùng const để định nghĩa giá trị chỉ đọc, không thể thay đổi sau khi khởi tạo.
int age = 30;
double pi = 3.14159;
char grade = 'A';
std::string name = "Alice";
bool isActive = true;
// Hằng số
const int MAX_USERS = 100;
const std::string COMPANY = "CodeUtility";
// Cố gắng sửa một const sẽ gây lỗi khi biên dịch
// MAX_USERS = 200; // ❌ lỗi
2. Cấu trúc điều kiện (if / switch)
Dùng if, else if, else để rẽ nhánh. Dùng switch cho nhiều giá trị.
int x = 2;
if (x == 1) {
std::cout << "Một\n";
} else if (x == 2) {
std::cout << "Hai\n";
} else {
std::cout << "Khác\n";
}
// Switch-case
switch (x) {
case 1:
std::cout << "Một\n";
break;
case 2:
std::cout << "Hai\n";
break;
default:
std::cout << "Khác\n";
}
3. Vòng lặp
Dùng for, while, và do-while để lặp các khối mã.
for (int i = 0; i < 3; i++) {
std::cout << i << "\n";
}
int n = 3;
while (n > 0) {
std::cout << n << "\n";
n--;
}
4. Mảng
Mảng lưu nhiều phần tử cùng kiểu.
int numbers[3] = {10, 20, 30};
std::cout << numbers[1] << "\n";
5. Thao tác Mảng/Vector
Dùng std::vector cho mảng động.
#include <vector>
std::vector nums = {1, 2, 3};
nums.push_back(4);
nums.pop_back();
for (int n : nums) {
std::cout << n << " ";
}
6. Nhập/Xuất console
Dùng std::cin để nhập và std::cout để xuất.
std::string name;
std::cout << "Nhập tên của bạn: ";
std::cin >> name;
std::cout << "Xin chào, " << name << "\n";
7. Hàm
Hàm nhóm logic có thể tái sử dụng. Dùng tham số và kiểu trả về.
int add(int a, int b) {
return a + b;
}
std::cout << add(3, 4);
8. Map
std::map lưu các cặp khóa-giá trị giống như từ điển.
#include <map>
std::map ages;
ages["Alice"] = 30;
std::cout << ages["Alice"];
9. Xử lý ngoại lệ
Dùng try và catch để xử lý lỗi lúc chạy.
try {
throw std::runtime_error("Đã xảy ra lỗi");
} catch (const std::exception& e) {
std::cout << e.what();
}
10. I/O Tệp
Dùng fstream để đọc và ghi tệp.
#include <fstream>
std::ofstream out("file.txt");
out << "Xin chào tệp";
out.close();
std::ifstream in("file.txt");
std::string line;
getline(in, line);
std::cout << line;
in.close();
11. Xử lý chuỗi
Chuỗi trong C++ hỗ trợ các phương thức như length(), substr(), và find().
std::string text = "Xin chào Thế giới";
std::cout << text.length();
std::cout << text.substr(0, 5);
std::cout << text.find("Thế giới");
12. Lớp & Đối tượng
C++ hỗ trợ lập trình hướng đối tượng thông qua các lớp.
class Person {
public:
std::string name;
Person(std::string n) : name(n) {}
void greet() { std::cout << "Xin chào, tôi là " << name; }
};
Person p("Alice");
p.greet();
13. Con trỏ
Con trỏ lưu địa chỉ bộ nhớ của một biến khác. Dùng & để lấy địa chỉ,
và * để giải tham chiếu (truy cập giá trị tại địa chỉ đó).
int x = 10;
int* ptr = &x;
std::cout << "Giá trị của x: " << x << "\n";
std::cout << "Địa chỉ của x: " << ptr << "\n";
std::cout << "Giá trị từ con trỏ: " << *ptr << "\n";
// Sửa x thông qua con trỏ
*ptr = 20;
std::cout << "x đã được cập nhật: " << x << "\n";
🐞 Cách gỡ lỗi code %{language} online
Dùng trình debug %{language} online để tìm lỗi runtime và logic mà không cần cài compiler hoặc IDE. Server mode biên dịch kèm debug symbols và chạy chương trình bằng GDB.
- Đặt một hoặc nhiều breakpoint cạnh số dòng.
- Chọn Debug để biên dịch và dừng tại breakpoint đầu tiên phù hợp.
- Kiểm tra dòng hiện tại, call stack và các biến.
- Dùng Continue, Step Over, Step Into hoặc Step Out.
- Chọn Stop để kết thúc phiên debug.
Bắt đầu với ví dụ nhỏ có thể tái hiện lỗi và đặt breakpoint ngay trước khi giá trị hoặc luồng điều khiển trở nên bất thường.