Cho 3 chữ số a, b và c. Nhiệm vụ là tìm tất cả các kết hợp có thể từ các chữ số này.
Examples:
Input: [1, 2, 3] Output: 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 Input: [0, 9, 5] Output: 0 9 5 0 5 9 9 0 5 9 5 0 5 0 9 5 9 0Phương pháp 1: Lực lượng vũ phu hoặc cách tiếp cận ngây thơBrute force or Naive approach
Cách tiếp cận ngây thơ là chạy 3 vòng từ 0 đến 3 và in tất cả các số từ danh sách nếu các chỉ mục không bằng nhau.
Example:
Python3
def 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 0
1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 11 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 2 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 31 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 4 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 51 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 61 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 71 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 8
1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 91 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 2 (1, 2, 3) (1, 3, 2) (2, 1, 3) (2, 3, 1) (3, 1, 2) (3, 2, 1) 11 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 4 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 51 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 61 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 71 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 8
(1, 2, 3) (1, 3, 2) (2, 1, 3) (2, 3, 1) (3, 1, 2) (3, 2, 1) 71 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 2 (1, 2, 3) (1, 3, 2) (2, 1, 3) (2, 3, 1) (3, 1, 2) (3, 2, 1) 91 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 4 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 51 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 61 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 71 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 8
(1, 2, 3) (1, 3, 2) (2, 1, 3) (2, 3, 1) (3, 1, 2) (3, 2, 1)5(1, 2, 3) (1, 3, 2) (2, 1, 3) (2, 3, 1) (3, 1, 2) (3, 2, 1)6 (1, 2, 3) (1, 3, 2) (2, 1, 3) (2, 3, 1) (3, 1, 2) (3, 2, 1)7(1, 2, 3) (1, 3, 2) (2, 1, 3) (2, 3, 1) (3, 1, 2) (3, 2, 1)8(1, 2, 3) (1, 3, 2) (2, 1, 3) (2, 3, 1) (3, 1, 2) (3, 2, 1) 1(1, 2) (1, 3) (2, 1) (2, 3) (3, 1) (3, 2)0
(1, 2) (1, 3) (2, 1) (2, 3) (3, 1) (3, 2)8(1, 2) (1, 3) (2, 1) (2, 3) (3, 1) (3, 2)9(1, 2) (1, 3) (2, 3)0
(1, 2) (1, 3) (2, 3)1(1, 2) (1, 3) (2, 3)2(1, 2) (1, 3) (2, 3)3(1, 2) (1, 3) (2, 3)4(1, 2) (1, 3) (2, 3)31 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 7(1, 2) (1, 3) (2, 3)7
Output:
1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1Phương pháp 2: Sử dụng itertools.permutations ()Using itertools.permutations()
Phương thức này lấy một danh sách làm đầu vào và trả về một danh sách đối tượng các bộ dữ liệu chứa tất cả hoán vị trong một biểu mẫu danh sách.
Example:
Python3
(1, 2) (1, 3) (2, 3)8 (1, 2) (1, 3) (2, 3)9(1, 2) (1, 3) (2, 3)0 (1, 2) (1, 3) (2, 3)1
(1, 2) (1, 3) (2, 3)2(1, 2, 3) (1, 3, 2) (2, 1, 3) (2, 3, 1) (3, 1, 2) (3, 2, 1)8 (1, 2) (1, 3) (2, 3)4(1, 2) (1, 3) (2, 3)22(1, 2) (1, 3) (2, 3)3(1, 2) (1, 3) (2, 3)4(1, 2) (1, 3) (2, 3)31 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 7(2, 1) (2, 3) (1, 3)01 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 7(2, 1) (2, 3) (1, 3)2
1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 2 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 31 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 4 (2, 1) (2, 3) (1, 3)6
1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 1(1, 2) (1, 3) (2, 1) (2, 3) (3, 1) (3, 2)9(2, 1) (2, 3) (1, 3)9
Output:
(1, 2, 3) (1, 3, 2) (2, 1, 3) (2, 3, 1) (3, 1, 2) (3, 2, 1)Python cung cấp các phương pháp trực tiếp để tìm hoán vị và kết hợp một chuỗi. Các phương pháp này có mặt trong gói itertools.
Permutation
Đầu tiên nhập gói ITERTOOLS để thực hiện phương thức hoán vị trong Python. Phương thức này lấy một danh sách làm đầu vào và trả về một danh sách đối tượng các bộ dữ liệu có chứa tất cả các hoán vị trong một biểu mẫu danh sách. & Nbsp; & nbsp;
Python3
(1, 2) (1, 3) (2, 3)8 (1, 2) (1, 3) (2, 3)9(1, 2) (1, 3) (2, 3)0 (1, 1) (1, 2) (1, 3) (2, 2) (2, 3) (3, 3) 3
(1, 1) (1, 2) (1, 3) (2, 2) (2, 3) (3, 3) 4(1, 2, 3) (1, 3, 2) (2, 1, 3) (2, 3, 1) (3, 1, 2) (3, 2, 1)8 (1, 2) (1, 3) (2, 3)4(1, 2) (1, 3) (2, 3)22____53(1, 2) (1, 3) (2, 3)4(1, 2) (1, 3) (2, 3)31 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 7def2
1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 2 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 31 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 4 def6def7
1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 1(1, 2) (1, 3) (2, 1) (2, 3) (3, 1) (3, 2)9 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 00
Output:
(1, 2, 3) (1, 3, 2) (2, 1, 3) (2, 3, 1) (3, 1, 2) (3, 2, 1)Nó tạo ra n! hoán vị nếu độ dài của chuỗi đầu vào là n. & nbsp; nếu muốn & nbsp; để có được hoán vị có độ dài l sau đó thực hiện nó theo cách này. & nbsp; & nbsp;
If want to get permutations of length L then implement it in this way.
Python3
(1, 2) (1, 3) (2, 3)8 (1, 2) (1, 3) (2, 3)9(1, 2) (1, 3) (2, 3)0 (1, 1) (1, 2) (1, 3) (2, 2) (2, 3) (3, 3) 3
(1, 1) (1, 2) (1, 3) (2, 2) (2, 3) (3, 3) 4(1, 2, 3) (1, 3, 2) (2, 1, 3) (2, 3, 1) (3, 1, 2) (3, 2, 1)8 (1, 2) (1, 3) (2, 3)4(1, 2) (1, 3) (2, 3)22____53(1, 2) (1, 3) (2, 3)4(1, 2) (1, 3) (2, 3)31 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 7(2, 1) (2, 3) (1, 3)0(1, 2) (1, 3) (2, 3)41 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 15
1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 2 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 31 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 4 def6def7
1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 1(1, 2) (1, 3) (2, 1) (2, 3) (3, 1) (3, 2)9 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 00
Output:
(1, 2) (1, 3) (2, 1) (2, 3) (3, 1) (3, 2)Nó tạo ra n! hoán vị nếu độ dài của chuỗi đầu vào là n. & nbsp; nếu muốn & nbsp; để có được hoán vị có độ dài l sau đó thực hiện nó theo cách này. & nbsp; & nbsp;
Combination
(1, 2)
(1, 3)
(2, 3)8 (1, 2)
(1, 3)
(2, 3)9(1, 2)
(1, 3)
(2, 3)0 (1, 1)
(1, 2)
(1, 3)
(2, 2)
(2, 3)
(3, 3) 3
Python3
(1, 1) (1, 2) (1, 3) (2, 2) (2, 3) (3, 3) 4(1, 2, 3) (1, 3, 2) (2, 1, 3) (2, 3, 1) (3, 1, 2) (3, 2, 1)8 (1, 2) (1, 3) (2, 3)4(1, 2) (1, 3) (2, 3)22____53(1, 2) (1, 3) (2, 3)4(1, 2) (1, 3) (2, 3)31 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 7(2, 1) (2, 3) (1, 3)0(1, 2) (1, 3) (2, 3)41 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 15
Nó tạo ra ncr * r! hoán vị Nếu độ dài của chuỗi đầu vào là n và tham số đầu vào là r.
Phương thức này lấy một danh sách và đầu vào r làm đầu vào và trả về một danh sách đối tượng các bộ dữ liệu chứa tất cả các kết hợp có thể có của độ dài r trong một biểu mẫu danh sách. & Nbsp; & nbsp;
(1, 2) (1, 3) (2, 3)8 (1, 2) (1, 3) (2, 3)9(1, 2) (1, 3) (2, 3)0 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 27
Output:
(1, 2) (1, 3) (2, 3)(1, 2)
(1, 3)
(2, 3)2(1, 2, 3)
(1, 3, 2)
(2, 1, 3)
(2, 3, 1)
(3, 1, 2)
(3, 2, 1)8 1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
30(1, 2)
(1, 3)
(2, 3)2253(1, 2)
(1, 3)
(2, 3)4(1, 2)
(1, 3)
(2, 3)31 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
7(2, 1)
(2, 3)
(1, 3)0(1, 2)
(1, 3)
(2, 3)4(2, 1)
(2, 3)
(1, 3)2
Python3
1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 2 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 31 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 4 def61 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 43
1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 1(1, 2) (1, 3) (2, 1) (2, 3) (3, 1) (3, 2)9 (2, 1) (2, 3) (1, 3)9
1. Kết hợp được phát ra theo thứ tự sắp xếp từ vựng của đầu vào. Vì vậy, nếu danh sách đầu vào được sắp xếp, các bộ dữ liệu kết hợp sẽ được tạo theo thứ tự được sắp xếp. & Nbsp; & nbsp;
(1, 2) (1, 3) (2, 3)8 (1, 2) (1, 3) (2, 3)9(1, 2) (1, 3) (2, 3)0 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 27
Output:
(1, 2) (1, 3) (2, 3)(1, 2)
(1, 3)
(2, 3)2(1, 2, 3)
(1, 3, 2)
(2, 1, 3)
(2, 3, 1)
(3, 1, 2)
(3, 2, 1)8 1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
30(1, 2)
(1, 3)
(2, 3)2253(1, 2)
(1, 3)
(2, 3)4(1, 2)
(1, 3)
(2, 3)31 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
7(2, 1)
(2, 3)
(1, 3)0(1, 2)
(1, 3)
(2, 3)4(2, 1)
(2, 3)
(1, 3)2
Python3
1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 2 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 31 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 4 def61 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 43
1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 1(1, 2) (1, 3) (2, 1) (2, 3) (3, 1) (3, 2)9 (2, 1) (2, 3) (1, 3)9
1. Kết hợp được phát ra theo thứ tự sắp xếp từ vựng của đầu vào. Vì vậy, nếu danh sách đầu vào được sắp xếp, các bộ dữ liệu kết hợp sẽ được tạo theo thứ tự được sắp xếp. & Nbsp; & nbsp;
(1, 2) (1, 3) (2, 3)8 (1, 2) (1, 3) (2, 3)9(1, 2) (1, 3) (2, 3)0 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 27
Output:
(2, 1) (2, 3) (1, 3)(1, 2)
(1, 3)
(2, 3)2(1, 2, 3)
(1, 3, 2)
(2, 1, 3)
(2, 3, 1)
(3, 1, 2)
(3, 2, 1)8 1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
30(1, 2)
(1, 3)
(2, 3)2253(1, 2)
(1, 3)
(2, 3)4(1, 2)
(1, 3)
(2, 3)31 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
7(2, 1)
(2, 3)
(1, 3)0(1, 2)
(1, 3)
(2, 3)4(2, 1)
(2, 3)
(1, 3)2
Python3
1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 2 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 31 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 4 def61 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 43
1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 1(1, 2) (1, 3) (2, 1) (2, 3) (3, 1) (3, 2)9 (2, 1) (2, 3) (1, 3)9
1. Kết hợp được phát ra theo thứ tự sắp xếp từ vựng của đầu vào. Vì vậy, nếu danh sách đầu vào được sắp xếp, các bộ dữ liệu kết hợp sẽ được tạo theo thứ tự được sắp xếp. & Nbsp; & nbsp;
1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 1(1, 2) (1, 3) (2, 1) (2, 3) (3, 1) (3, 2)9 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 00
Output:
(1, 1) (1, 2) (1, 3) (2, 2) (2, 3) (3, 3)