Mô tả bài toán
Cho ba số i, j, k và số n. Tìm danh sách tất cả bộ ba (x, y, z) với 0 <= x <= i, 0 <= y <= j, 0 <= z <= k sao cho x + y + z != n. Sử dụng list comprehension.
Ví dụ
i = 1, j = 1, k = 2, n = 3 -> [[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 thuật
Sử dụng list comprehension lồng nhau với điều kiện x + y + z != n.
Triển khai Python
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]]