Giả sử chúng ta có ba số i, j và k và một số khác n. Chúng ta sẽ phải tìm danh sách tất cả các bộ ba (i, j, k) mà i + j + k không giống với n. Chúng tôi sẽ phải giải quyết vấn đề này bằng cách sử dụng chiến lược hiểu danh sách.
Vì vậy, nếu đầu vào là i =1, j =1, z =2 và n =3, thì đầu ra sẽ là [[0, 0, 0], [0, 0, 1], [0, 0, 2], [0, 1, 0], [0, 1, 1], [1, 0, 0], [1, 0, 1], [1, 1, 0], [1, 1, 2] ]
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
-
arr =mảng bộ ba [x, y, z] với mọi x trong phạm vi từ 0 đến i, với mọi y trong phạm vi từ 0 đến j và với mọi z trong phạm vi từ 0 đến k, khi x + y + z là không giống với n
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
def solve(i, j, k, n): arr = [[x, y, z] for x in range(i+1) for y in range(j+1) for z in range(k+1) if x+y+z != n] return arr i = 1 j = 1 k = 2 n = 3 print(solve(i, j, k, n))
Đầu vào
1, 1, 2, 3
Đầu ra
[[0, 0, 0], [0, 0, 1], [0, 0, 2], [0, 1, 0], [0, 1, 1], [1, 0, 0], [1, 0, 1], [1, 1, 0], [1, 1, 2]]