• LQDOJ
  • Trang chủ
  • Bài tập
  • Bài nộp
  • Thành viên
  • Kỳ thi
  • Nhóm
  • Giới thiệu
    • Máy chấm
    • Khóa học
    • Đề xuất ý tưởng
    • Đề xuất bài tập
    • Tools
    • Báo cáo tiêu cực
    • Báo cáo lỗi

Tiếng Việt

Tiếng Việt
English

Đăng nhập

Đăng ký

dungpham29803

  • Giới thiệu
  • Bài tập
  • Bài nộp

Rating
-
Bài tập
1
Điểm
40
Rating #
-
Điểm #
29455

Giới thiệu

def solve(n, weights):
def backtrack(index, left_sum, right_sum):
# Nếu đã đặt hết các quả cân, đây là một cách xếp hợp lệ
if index == n:
return 1

    count = 0

    # Đặt quả cân vào đĩa bên phải
    count += backtrack(index + 1, left_sum, right_sum + weights[index])

    # Đặt quả cân vào đĩa bên trái nếu tổng bên trái không vượt quá tổng bên phải
    if left_sum + weights[index] <= right_sum + weights[index]:
        count += backtrack(index + 1, left_sum + weights[index], right_sum)

    return count

# Không cần sắp xếp vì thứ tự đã ảnh hưởng đến cách xếp
return backtrack(0, 0, 0)

def main():
n = int(input())
weights = list(map(int, input().split()))
print(solve(n, weights))

if name == "main":
main()


«    »
Thứ 2
Thứ 3
Thứ 4
Thứ 5
Thứ 6
Thứ 7
CN
Ít
Nhiều

proudly powered by DMOJ| developed by LQDJudge team