Thử thách
Thách thức là viết một mã lấy số nguyên dương 'n' làm đầu vào và hiển thị tất cả các cách có thể viết các số từ 1 - n, với dấu dương hoặc âm ở giữa, sao cho tổng của chúng là bằng không. Xin nhớ rằng bạn chỉ có thể sử dụng phép cộng hoặc phép trừ.
Ví dụ: nếu đầu vào là 3, thì có 2 cách để tính tổng 0:
1+2-3=0
-1-2+3=0
Lưu ý rằng, các số theo thứ tự, bắt đầu từ 1 đến n (là 3 trong trường hợp này). Vì rõ ràng từ ví dụ, dấu của số đầu tiên cũng có thể âm, vì vậy hãy cẩn thận.
Bây giờ, 3 đã khá đơn giản. Hãy để chúng tôi liệt kê tất cả các cách khi chúng tôi xem xét số 7.
1+2-3+4-5-6+7=0
1+2-3-4+5+6-7=0
1-2+3+4-5+6-7=0
1-2-3-4-5+6+7=0
-1+2+3+4+5-6-7=0
-1+2-3-4+5-6+7=0
-1-2+3+4-5-6+7=0
-1-2+3-4+5+6-7=0
Vì vậy, ở đây, chúng tôi đã có tổng cộng 8 cách có thể.
Đầu vào và đầu ra
Như đã nêu trước, đầu vào sẽ là một số nguyên dương . Đầu ra của bạn phải chứa tất cả các cách có thể trong đó các số cho tổng bằng không. Trong trường hợp không có cách nào có thể làm tương tự, bạn có thể xuất bất cứ thứ gì bạn thích.
Ngoài ra, bạn có thể in đầu ra ở bất kỳ định dạng nào bạn muốn . Nhưng, nó nên được hiểu . Ví dụ, bạn có thể in nó như trong ví dụ trên. Hoặc, bạn chỉ có thể in các dấu hiệu của các số theo thứ tự. Mặt khác, bạn cũng có thể in '0' và '1' theo thứ tự, trong đó '0' sẽ hiển thị dấu âm và '1' sẽ hiển thị dấu dương (hoặc ngược lại).
Ví dụ: bạn có thể biểu thị 1 + 2-3 = 0 bằng cách sử dụng:
1+2-3=0
1+2-3
[1,2,-3]
++-
110
001
Tuy nhiên, tôi khuyên bạn nên sử dụng bất kỳ định dạng nào trong ba định dạng đầu tiên để đơn giản. Bạn có thể giả sử tất cả các đầu vào là hợp lệ.
Ví dụ
7 ->
1+2-3+4-5-6+7=0
1+2-3-4+5+6-7=0
1-2+3+4-5+6-7=0
1-2-3-4-5+6+7=0
-1+2+3+4+5-6-7=0
-1+2-3-4+5-6+7=0
-1-2+3+4-5-6+7=0
-1-2+3-4+5+6-7=0
4 ->
1-2-3+4=0
-1+2+3-4=0
2 -> -
8 ->
1+2+3+4-5-6-7+8=0
1+2+3-4+5-6+7-8=0
1+2-3+4+5+6-7-8=0
1+2-3-4-5-6+7+8=0
1-2+3-4-5+6-7+8=0
1-2-3+4+5-6-7+8=0
1-2-3+4-5+6+7-8=0
-1+2+3-4+5-6-7+8=0
-1+2+3-4-5+6+7-8=0
-1+2-3+4+5-6+7-8=0
-1-2+3+4+5+6-7-8=0
-1-2+3-4-5-6+7+8=0
-1-2-3+4-5+6-7+8=0
-1-2-3-4+5+6+7-8=0
Chấm điểm
Đây là môn đánh gôn , vì vậy đoạn mã ngắn nhất sẽ thắng!
+
như N
và -
như -N
, hoặc là lấy nó quá xa? (ví dụ 3
-> [[-3,-3,3], [3,3,-3]]
)
0
và 1
tùy chọn nhưng sử dụng N
và -N
(xem chỉnh sửa của tôi ở trên)