Tam giác Floyd là gì?
Tam giác Floyd là tam giác vuông chứa các số nguyên liên tiếp bắt đầu từ 1, mỗi hàng có số phần tử bằng số thứ tự hàng.
Hàng 1: 1
Hàng 2: 2 3
Hàng 3: 4 5 6
Hàng 4: 7 8 9 10
...
Chương trình 1: Tam giác Floyd cơ bản
#include <stdio.h>
int main() {
int rows, i, j, so = 1;
printf("Nhap so hang cua tam giac Floyd: ");
scanf("%d", &rows);
for (i = 1; i <= rows; i++) {
for (j = 1; j <= i; j++) {
printf("%d ", so);
so++;
}
printf("\n");
}
return 0;
}
Kết quả (rows = 6)
Nhap so hang cua tam giac Floyd: 6
1
2 3
4 5 6
7 8 9 10
11 12 13 14 15
16 17 18 19 20 21
Chương trình 2: Tam giác Floyd ngược (Reverse Floyd's Triangle)
In từ số lớn nhất về 1, hàng đầu tiên dài nhất.
#include <stdio.h>
int main() {
int rows, i, j;
printf("Nhap so hang: ");
scanf("%d", &rows);
// Tổng số phần tử = n(n+1)/2
int so = rows * (rows + 1) / 2;
for (i = rows; i >= 1; i--) {
for (j = 1; j <= i; j++) {
printf("%4d", so);
so--;
}
printf("\n");
}
return 0;
}
Kết quả ngược (rows = 7)
Nhap so hang: 7
28 27 26 25 24 23 22
21 20 19 18 17 16 15
14 13 12 11 10 9 8
7 6 5 4 3
2 1
Phân tích thuật toán
- Biến
so: Bộ đếm toàn cục, tăng dần (chương trình 1) hoặc giảm dần (chương trình 2) - Vòng lặp ngoài: Điều khiển hàng (1 đến n hoặc n đến 1)
- Vòng lặp trong: In
isố trên hàng thứi - Công thức tổng: n(n+1)/2 - số hạng thứ n của dãy số tam giác
Bài tập mở rộng
- In tam giác Floyd chỉ với số chẵn/lẻ
- In tam giác Floyd với ký tự (A, B, C...)
- Tính tổng từng hàng của tam giác Floyd