Xem thảo luận Cải thiện bài viết Lưu bài viết Xem thảo luận Cải thiện bài viết Lưu bài viết Đọc Examples: Bàn luận Chúng ta có n đồng tiền cần sắp xếp dưới dạng tam giác, tức là hàng thứ nhất sẽ có 1 đồng tiền, hàng thứ hai sẽ có 2 đồng xu, v.v., chúng ta cần nói chiều cao tối đa mà chúng ta có thể đạt được bằng cách sử dụng các đồng tiền n này.Input : N = 7
Output : 3
Maximum height will be 3, putting 1, 2 and
then 3 coins. It is not possible to use 1
coin left.
Input : N = 12
Output : 4
Maximum height will be 4, putting 1, 2, 3 and
4 coins, it is not possible to make height as 5,
because that will require 15 coins.
def
4
0
41
42
43
44
41
46
43 ________ 18 & nbsp;
41
Input: N = 5 Output: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 10
43 ________ 22 & nbsp;
41
Input: N = 5 Output: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 14
Input: N = 5 Output: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 15
Input: N = 5 Output: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 16
Input: N = 5 Output: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 17
Input: N = 5 Output: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 18
42
43
Input: N = 5 Output: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 15
0C0 1C0 1C1 2C0 2C1 2C2 3C0 3C1 3C2 3C32
0C0 1C0 1C1 2C0 2C1 2C2 3C0 3C1 3C2 3C33
0C0 1C0 1C1 2C0 2C1 2C2 3C0 3C1 3C2 3C34
0C0 1C0 1C1 2C0 2C1 2C2 3C0 3C1 3C2 3C35
Input: N = 5 Output: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 18
46
43
0C0 1C0 1C1 2C0 2C1 2C2 3C0 3C1 3C2 3C39
0C0 1C0 1C1 2C0 2C1 2C2 3C0 3C1 3C2 3C34
1 1 1 1 2 1 1 3 3 1 1 4 6 4 11
41
1 1 1 1 2 1 1 3 3 1 1 4 6 4 13
1 1 1 1 2 1 1 3 3 1 1 4 6 4 14
def
1 1 1 1 2 1 1 3 3 1 1 4 6 4 16
41
1 1 1 1 2 1 1 3 3 1 1 4 6 4 18
43
48
0C0 1C0 1C1 2C0 2C1 2C2 3C0 3C1 3C2 3C32
C[line, i] = C[line, i-1] * [line - i + 1] / i2
C[line, i] = C[line, i-1] * [line - i + 1] / i3
C[line, i] = C[line, i-1] * [line - i + 1] / i4
41
C[line, i] = C[line, i-1] * [line - i + 1] / i6
43
C[line, i] = C[line, i-1] * [line - i + 1] / i8
Input: N = 5 Output: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 16
48
11**0 = 1 11**1 = 11 11**2 = 121 11**3 = 13312
11**0 = 1 11**1 = 11 11**2 = 121 11**3 = 13313
Output:
4
41
1 1 1 1 2 1 1 3 3 1 1 4 6 4 13
1 1 1 1 2 1 1 3 3 1 1 4 6 4 17
1 1 1 1 2 1 1 3 3 1 1 4 6 4 18
1 1 1 1 2 1 1 3 3 1 1 4 6 4 19
43 ________ 71 & nbsp;
Example:
Input: N = 5 Output: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1
Vui lòng tham khảo bài viết đầy đủ về chiều cao tối đa khi tiền được sắp xếp theo tam giác để biết thêm chi tiết!Using nCr formula i.e. n!/[n-r]!r!
Tam giác Pascal sườn là một mô hình của tam giác dựa trên NCR, dưới đây là biểu diễn hình ảnh của Tam giác Pascal.
0C0 1C0 1C1 2C0 2C1 2C2 3C0 3C1 3C2 3C3
Algorithm:
- Phương pháp 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 hình ảnh trở thành:
- Lấy một số hàng để được in, giả sử nó là n
- Làm cho phép lặp bên ngoài I từ 0 đến n lần để in các hàng.
- Tạo lần lặp bên trong cho J từ 0 đến [n - 1].
- In không gian trống đơn.
- Đóng vòng bên trong [vòng J] // nó cần thiết cho khoảng cách bên trái.
- Tạo lần lặp bên trong cho J từ 0 đến i.
- In NCR của I và J.
Implementation:
Python3
Đóng vòng bên trong.
In ký tự dòng mới [\ n] sau mỗi lần lặp bên trong.
11**0 = 1 11**1 = 11 11**2 = 121 11**3 = 13314
11**0 = 1 11**1 = 11 11**2 = 121 11**3 = 13315
11**0 = 1 11**1 = 11 11**2 = 121 11**3 = 13316
11**0 = 1 11**1 = 11 11**2 = 121 11**3 = 13317
1 1 1 1 2 1 1 3 3 1 1 4 6 4 18
43
1 1 1 1 2 1 1 3 3 1 1 4 6 4 10
Input: N = 5 Output: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 18
11**0 = 1 11**1 = 11 11**2 = 121 11**3 = 13312
def
943
401
402
1 1 1 1 2 1 1 3 3 1 1 4 6 4 11
1 1 1 1 2 1 1 3 3 1 1 4 6 4 12
1 1 1 1 2 1 1 3 3 1 1 4 6 4 13
1 1 1 1 2 1 1 3 3 1 1 4 6 4 14
1 1 1 1 2 1 1 3 3 1 1 4 6 4 15
Input: N = 5 Output: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 18
11**0 = 1 11**1 = 11 11**2 = 121 11**3 = 13312
414
0C0 1C0 1C1 2C0 2C1 2C2 3C0 3C1 3C2 3C34
0C0 1C0 1C1 2C0 2C1 2C2 3C0 3C1 3C2 3C34
417
C[line, i] = C[line, i-1] * [line - i + 1] / i3
419
Input: N = 5 Output: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 16
421
43
401
402
41
11**0 = 1 11**1 = 11 11**2 = 121 11**3 = 13312
427
Output:
1 1 1 1 2 1 1 3 3 1 1 4 6 4 1
4
1 1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
8 1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
3 1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
4def
1Input: N = 5
Output:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
6 0C0
1C0 1C1
2C0 2C1 2C2
3C0 3C1 3C2 3C3
0C0
1C0 1C1
2C0 2C1 2C2
3C0 3C1 3C2 3C3
2______18def
6 O[N2]
4
1 1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
8 1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
3 1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
44
08 0C0
1C0 1C1
2C0 2C1 2C2
3C0 3C1 3C2 3C3
24
8def
6We can optimize the above code by the following concept of a Binomial Coefficient, the i’th entry in a line number line is Binomial Coefficient C[line, i] and all lines start with
value 1. The idea is to calculate C[line, i] using C[line, i-1].
C[line, i] = C[line, i-1] * [line - i + 1] / i
Implementations:
Python3
In ký tự dòng mới [\ n] sau mỗi lần lặp bên trong.
11**0 = 1 11**1 = 11 11**2 = 121 11**3 = 13314
11**0 = 1 11**1 = 11 11**2 = 121 11**3 = 13315
11**0 = 1 11**1 = 11 11**2 = 121 11**3 = 13316
11**0 = 1 11**1 = 11 11**2 = 121 11**3 = 13317
1 1 1 1 2 1 1 3 3 1 1 4 6 4 18
43
1 1 1 1 2 1 1 3 3 1 1 4 6 4 10
Input: N = 5 Output: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 18
11**0 = 1 11**1 = 11 11**2 = 121 11**3 = 13312
C[line, i] = C[line, i-1] * [line - i + 1] / i8
457
458
43
460
1 1 1 1 2 1 1 3 3 1 1 4 6 4 11
1 1 1 1 2 1 1 3 3 1 1 4 6 4 12
1 1 1 1 2 1 1 3 3 1 1 4 6 4 13
1 1 1 1 2 1 1 3 3 1 1 4 6 4 14
1 1 1 1 2 1 1 3 3 1 1 4 6 4 15
41
1 1 1 1 2 1 1 3 3 1 1 4 6 4 11
1 1 1 1 2 1 1 3 3 1 1 4 6 4 18
1 1 1 1 2 1 1 3 3 1 1 4 6 4 13
1 1 1 1 2 1 1 3 3 1 1 4 6 4 14
def
1Input: N = 5 Output: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 16
0C0 1C0 1C1 2C0 2C1 2C2 3C0 3C1 3C2 3C3
0C0 1C0 1C1 2C0 2C1 2C2 3C0 3C1 3C2 3C32______18
def
6Input: N = 5 Output: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 18
11**0 = 1 11**1 = 11 11**2 = 121 11**3 = 13312
C[line, i] = C[line, i-1] * [line - i + 1] / i8
457
480
43
482
483
484
41
1 1 1 1 2 1 1 3 3 1 1 4 6 4 11
1 1 1 1 2 1 1 3 3 1 1 4 6 4 18
1 1 1 1 2 1 1 3 3 1 1 4 6 4 13
1 1 1 1 2 1 1 3 3 1 1 4 6 4 14
408
0C0 1C0 1C1 2C0 2C1 2C2 3C0 3C1 3C2 3C32
48
def
641
11**0 = 1 11**1 = 11 11**2 = 121 11**3 = 13312
427
Output:
1 1 1 1 2 1 1 3 3 1 1 4 6 4 1
4
1 1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
8 1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
3 1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
4def
1Input: N = 5
Output:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
6 0C0
1C0 1C1
2C0 2C1 2C2
3C0 3C1 3C2 3C3
0C0
1C0 1C1
2C0 2C1 2C2
3C0 3C1 3C2 3C3
2______18def
6 O[N2]
4
1 1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
8 1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
3 1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
44
08 0C0
1C0 1C1
2C0 2C1 2C2
3C0 3C1 3C2 3C3
24
8def
6: O[1] because it is using constant space for variables
Độ phức tạp về thời gian: O [N2] This is the most optimized approach to print Pascal’s triangle, this approach is based on powers of 11.
11**0 = 1 11**1 = 11 11**2 = 121 11**3 = 1331
Implementation:
Phương pháp 2: Chúng ta có thể tối ưu hóa mã trên bằng khái niệm sau đây về hệ số nhị thức, mục nhập I'th trong một dòng dòng là hệ số nhị thức c [dòng, i] và tất cả các dòng bắt đầu với giá trị 1. Ý tưởng là tính toán C [dòng, i] sử dụng C [dòng, I-1].
In ký tự dòng mới [\ n] sau mỗi lần lặp bên trong.
11**0 = 1 11**1 = 11 11**2 = 121 11**3 = 13314
11**0 = 1 11**1 = 11 11**2 = 121 11**3 = 13315
11**0 = 1 11**1 = 11 11**2 = 121 11**3 = 13316
11**0 = 1 11**1 = 11 11**2 = 121 11**3 = 13317
41
11**0 = 1 11**1 = 11 11**2 = 121 11**3 = 13312
C[line, i] = C[line, i-1] * [line - i + 1] / i8
457
C[line, i] = C[line, i-1] * [line - i + 1] / i3
def
1Input: N = 5 Output: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 16
Input: N = 5 Output: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 114
43
460
41
11**0 = 1 11**1 = 11 11**2 = 121 11**3 = 13312
C[line, i] = C[line, i-1] * [line - i + 1] / i8
457
Input: N = 5 Output: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 121
Input: N = 5 Output: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 122
C[line, i] = C[line, i-1] * [line - i + 1] / i8
Input: N = 5 Output: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 124
Input: N = 5 Output: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 125
Input: N = 5 Output: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 124
C[line, i] = C[line, i-1] * [line - i + 1] / i8
Input: N = 5 Output: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 128
C[line, i] = C[line, i-1] * [line - i + 1] / i3
C[line, i] = C[line, i-1] * [line - i + 1] / i3
Input: N = 5 Output: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 131
Output:
1 1 1 1 2 1 1 3 3 1 1 4 6 4 1
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
84
3 1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
0O[N]
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
2 1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
3 1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
4 1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
5: O[1] as using constant variable
41
1 1 1 1 2 1 1 3 3 1 1 4 6 4 11
1 1 1 1 2 1 1 3 3 1 1 4 6 4 18
1 1 1 1 2 1 1 3 3 1 1 4 6 4 13
1 1 1 1 2 1 1 3 3 1 1 4 6 4 14
def
1Input: N = 5 Output: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 16
0C0 1C0 1C1 2C0 2C1 2C2 3C0 3C1 3C2 3C3
0C0 1C0 1C1 2C0 2C1 2C2 3C0 3C1 3C2 3C32______18
def
6