Viết chương trình in ra Tam giác Pascal bằng Python

Đề bài: Viết chương trình in ra Tam giác Pascal với số hàng cho trước.

Ví dụ: Số hàng bằng 5 thì Tam giác Pascal sẽ được in ra như sau:

Input: n = 5
Output:
      1
     1 1
    1 2 1
   1 3 3 1
  1 4 6 4 1

Tam giác Pascal cũng là một câu hỏi thường xuyên được các công ty lớn sử dụng khi thi tuyển lập trình viên. Trong bài viết này, Quản Trị Mạng sẽ cùng các bạn tìm hiểu cách viết chương trình in ra Tam giác Pascal bằng Python.

Cách 1: Sử dụng công thức nCr tức là n!/(n-r)!r!

Sau khi sử dụng công thức nCr, biểu diễn bằng hình ảnh trở thành:

          0C0
       1C0   1C1
    2C0   2C1   2C2
 3C0   3C1   3C2    3C3

Thuật toán:

  • Lấy một số hàng sẽ được in, giả sử nó là n.
  • Thực hiện phép lặp ngoài i từ 0 tới n lần để in các hàng.
  • Thực hiện phép lặp trong cho j từ 0 đến (N-1).
  • In một khoảng trống "".
  • Đóng vòng lặp bên trong (vòng lặp j) //cần thiết cho khoảng cách bên trái.
  • Thực hiện phép lặp bên trong cho j từ 0 đến i.
  • In nCr của i và j.
  • Đóng vòng lặp bên trong.
  • In ký tự xuống xòng (\n) sau mỗi lần lặp bên trong.

Dưới đây là code mẫu:

# Print Pascal's Triangle in Python
from math import factorial
 
# input n
n = 5
for i in range(n):
    for j in range(n-i+1):
 
        # for left spacing
        print(end=" ")
 
    for j in range(i+1):
 
        # nCr = n!/((n-r)!*r!)
        print(factorial(i)//(factorial(j)*factorial(i-j)), end=" ")
 
    # for new line
    print()

Cách 2:

Chúng ta có thể tối ưu hóa đoạn code trên bằng khái niệm Hệ số Nhị thức sau, mục thứ i trong một dòng là Hệ số Nhị thức C(line, i) và tất cả các dòng bắt đầu bằng giá trị 1. Ở đây, chúng ta phải thực hiện ý tưởng là tính toán C(line, i) bằng cách sử dụng C(line, i-1).

Code mẫu như sau:

# Print Pascal's Triangle in Python
 
# input n
n = 5
 
for i in range(1, n+1):
    for j in range(0, n-i+1):
        print(' ', end='')
 
    # first element is always 1
    C = 1
    for j in range(1, i+1):
 
        # first value in a line is always 1
        print(' ', C, sep='', end='')
 
        # using Binomial Coefficient
        C = C * (i - j) // j
    print()

Cách 3:

Đây là cách tối ưu nhất để in tam giác Pascal. Cách này dựa trên cơ sở lũy thừa của 11.

11**0 = 1
11**1 = 11
11**2 = 121
11**3 = 1331

Code mẫu như sau:

# Print Pascal's Triangle in Python
 
# input n
n = 5
 
# iterarte upto n
for i in range(n):
    # adjust space
    print(' '*(n-i), end='')
 
    # compute power of 11
    print(' '.join(map(str, str(11**i))))

Tuy nhiên, nhược điểm là phương pháp này chỉ áp dụng được ho đến n=5 mà thôi.

Quản Trị Mạng hy vọng rằng bài viết này sẽ có ích đối với bạn.

Thứ Ba, 22/11/2022 11:14
51 👨 2.627
0 Bình luận
Sắp xếp theo
    ❖ Học Python