Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình Python tìm danh sách bộ ba i+j+k khác n


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]]