77 bài tập · 39 Easy · 19 Medium · 19 Hard
Hoàn thành chương trình in ra dòng chữ "Hello, World!" trên một dòng duy nhất.
Đọc một ký tự, một chuỗi và một câu từ stdin, sau đó in chúng ra mỗi thứ trên một dòng.
Tính tổng và hiệu của hai số nguyên, sau đó là tổng và hiệu của hai số thực.
Cho một số nguyên n, in ra chữ tiếng Anh tương ứng nếu 1 ≤ n ≤ 9, ngược lại in "Greater than 9".
Cho a và b, in ra các số từ a đến b. Với số 1-9 in chữ, với số > 9 in "even" nếu chẵn, "odd" nếu lẻ.
Viết hàm max_of_four nhận 4 số nguyên và trả về số lớn nhất.
Viết hàm update nhận hai con trỏ, gán tổng vào biến thứ nhất và hiệu (trị tuyệt đối) vào biến thứ hai.
Cho mảng điểm của sinh viên nam và nữ xen kẽ. Tính tổng điểm của sinh viên theo giới tính cho trước.
Cho mảng số nguyên, đảo ngược thứ tự các phần tử và in ra.
Cho số nguyên 5 chữ số, tính tổng các chữ số của nó.
Cấp phát động mảng n số nguyên, tính tổng các phần tử.
Cho một chuỗi, đếm tần suất xuất hiện của mỗi chữ số (0-9) trong chuỗi.
Tính giá trị lớn nhất của a & b, a | b, a ^ b với 1 ≤ a < b ≤ n.
Cho struct Box với chiều dài, rộng, cao. Tính thể tích các hộp có chiều cao < 41.
Sắp xếp mảng chuỗi theo thứ tự từ điển, số lượng ký tự khác nhau, và độ dài.
Viết hàm variadic để tính tổng, hiệu, tích của n số nguyên.
Cấp phát động mảng 2 chiều với kích thước thay đổi, điền số và in ra.
Sắp xếp các tam giác theo diện tích tăng dần. Mỗi tam giác được cho bởi 3 cạnh.
Quản lý state của các đối tượng với struct và con trỏ. Thực hiện các thao tác chuyển đổi.
Sinh tất cả hoán vị của mảng chuỗi theo thứ tự từ điển.
Cho 3 số a, b, c và số n. Tính số thứ n theo công thức: f(n) = a nếu n=1, f(n) = b nếu n=2, f(n) = c nếu n=3, f(n) = f(n-1) + f(n-2) + f(n-3) nếu n > 3.
In một pattern số dựa trên n. Với n=2: 2 2 2 2 2 \n 2 1 1 1 2 \n 2 1 0 1 2 \n 2 1 1 1 2 \n 2 2 2 2 2
Viết chương trình đảo ngược một chuỗi nhập từ bàn phím và in ra.
Kiểm tra một chuỗi có phải palindrome (đọc xuôi ngược như nhau) hay không.
In n số đầu tiên của dãy Fibonacci. F(0)=0, F(1)=1, F(n)=F(n-1)+F(n-2).
Tìm ước chung lớn nhất (GCD) của hai số nguyên dương bằng thuật toán Euclid.
Kiểm tra một số nguyên dương có phải số nguyên tố hay không.
Nhân hai ma trận a (m×n) và b (n×p), in ma trận kết quả.
Tìm phần tử lớn thứ hai trong mảng số nguyên.
Chuyển đổi số nhị phân (dạng chuỗi) sang số thập phân.
Đếm tần suất xuất hiện của mỗi phần tử trong mảng và in ra theo thứ tự tăng dần.
Cho hai mảng đã được sắp xếp tăng dần. Trộn chúng thành một mảng cũng được sắp xếp tăng dần.
Loại bỏ các phần tử trùng lặp trong mảng, chỉ giữ lại phần tử đầu tiên và in mảng kết quả.
Phân tích văn bản thành các đoạn (paragraph), mỗi đoạn thành các câu, mỗi câu thành các từ. Trả về từ/câu/đoạn theo truy vấn.
Tính giai thừa của một số nguyên n (n!). Giai thừa được định nghĩa: n! = n * (n-1) * ... * 1.
Kiểm tra số Armstrong (tổng lũy thừa 3 của các chữ số bằng chính số đó). Ví dụ: 153 = 1^3 + 5^3 + 3^3.
Kiểm tra số hoàn hảo (tổng các ước số bằng chính số đó). Ví dụ: 6 = 1 + 2 + 3.
Đếm số lượng nguyên âm (a, e, i, o, u) và phụ âm trong một chuỗi.
Chuyển đổi số thập phân sang nhị phân và in ra kết quả.
Kiểm tra một năm có phải năm nhuận hay không. Năm nhuận: chia hết cho 400, hoặc chia hết cho 4 nhưng không chia hết cho 100.
In hình kim tự tháp bằng dấu * với n dòng.
Tính ma trận chuyển vị của ma trận kích thước m×n. Chuyển vị: đổi hàng thành cột.
Tính tổng đường chéo chính và đường chéo phụ của ma trận vuông n×n.
Cài đặt thuật toán sắp xếp chèn (Insertion Sort) để sắp xếp mảng tăng dần.
Kiểm tra hai chuỗi có phải là anagram (cùng tập ký tự với số lượng bằng nhau) hay không.
Tìm và in ra từ dài nhất trong một câu. Nếu nhiều từ có cùng độ dài, in từ đầu tiên.
Xoay mảng sang phải k lần. Mỗi lần xoay, phần tử cuối cùng được đưa lên đầu.
Kiểm tra ma trận vuông có đối xứng qua đường chéo chính hay không (a[i][j] == a[j][i]).
In các bước di chuyển đĩa trong bài toán Tháp Hà Nội với n đĩa từ cột A sang cột C, dùng cột B làm trung gian.
Xếp n quân hậu lên bàn cờ n×n sao cho không quân hậu nào ăn nhau. In một cách xếp hoặc "No solution" nếu không có.
Giải Sudoku 9×9. Một số ô đã được điền sẵn (khác 0), các ô trống là 0. In bảng đã giải.
Cho mê cung n×n với 1 là đường đi, 0 là tường. Chuột ở (0,0) cần đến (n-1,n-1). In đường đi hoặc "No path".
Tìm độ dài dãy con chung dài nhất (LCS) của hai chuỗi.
Cho n vật với trọng lượng và giá trị. Tìm tổng giá trị lớn nhất có thể mang với túi có sức chứa W.
Chuyển biểu thức trung tố (infix) sang hậu tố (postfix) sử dụng stack. Biểu thức gồm + - * / ( ) và chữ cái thường.
Tính tổng hai số nguyên rất lớn (lên đến 100 chữ số) bằng cách xử lý chuỗi.
Cài đặt danh sách liên kết đơn: chèn vào đầu, in danh sách, và tìm kiếm phần tử.
Tính giá trị biểu thức số học chỉ gồm +, -, *, / và số nguyên. Biểu thức không có dấu ngoặc.
Nhập ba số nguyên và in ra số lớn nhất.
Kiểm tra một số nguyên là chẵn hay lẻ. In "Even" nếu chẵn, "Odd" nếu lẻ.
Tính tổng các số từ 1 đến n.
In bảng cửu chương của n từ 1 đến 10, mỗi dòng có dạng "n x i = kết_quả".
Đếm số lượng chữ số của một số nguyên dương.
Đảo ngược các chữ số của một số nguyên.
Kiểm tra một số nguyên dương có phải là lũy thừa của 2 hay không.
Cho mảng gồm n-1 số nguyên từ 1 đến n, trong đó có một số bị thiếu. Tìm số đó.
Cho mảng số nguyên và một số target. Tìm hai chỉ số i, j (i ≠ j) sao cho arr[i] + arr[j] = target. In ra "i j" hoặc "No solution".
Tìm tổng lớn nhất của một dãy con liên tiếp trong mảng số nguyên (thuật toán Kadane).
Di chuyển tất cả số 0 trong mảng về cuối, giữ nguyên thứ tự các phần tử khác không.
Kiểm tra chuỗi dấu ngoặc () {} [] có hợp lệ hay không. Dùng stack để kiểm tra.
Tìm phần tử xuất hiện nhiều hơn n/2 lần trong mảng. Đảm bảo luôn có đáp án.
Cho mảng n+1 số nguyên trong khoảng [1, n]. Tìm một phần tử xuất hiện ít nhất hai lần.
Cài đặt thuật toán sắp xếp trộn (Merge Sort) để sắp xếp mảng số nguyên.
Cài đặt thuật toán sắp xếp nhanh (Quick Sort) với chiến lược chọn pivot là phần tử cuối.
Cài đặt cây nhị phân tìm kiếm (BST) với các thao tác: chèn, duyệt in-order, và tìm kiếm.
Tìm số thao tác tối thiểu (chèn, xóa, thay thế) để biến chuỗi s1 thành chuỗi s2.
Đếm số cách xếp n quân hậu trên bàn cờ n×n sao cho không quân hậu nào ăn nhau.