# 添加括号 ## 题目背景 给定一个正整数序列a(1),a(2),...,a(n),(1<=n<=20) 不改变序列中每个元素在序列中的位置,把它们相加,并用括号记每次加法所得的和,称为中间和。 例如: 给出序列是4,1,2,3。 第一种添括号方法: ((4+1)+(2+3))=((5)+(5))=(10) 有三个中间和是5,5,10,它们之和为:5+5+10=20 第二种添括号方法 (4+((1+2)+3))=(4+((3)+3))=(4+(6))=(10) 中间和是3,6,10,它们之和为19。 ## 题目描述 现在要添上n-1对括号,加法运算依括号顺序进行,得到n-1个中间和,求出使中间和之和最小的添括号方法。 ## 输入格式 共两行。 第一行,为整数n。(1< =n< =20) 第二行,为a(1),a(2),...,a(n)这n个正整数,每个数字不超过100。 ## 输出格式 输出3行。 第一行,为添加括号的方法。 第二行,为最终的中间和之和。 第三行,为n-1个中间和,按照从里到外,从左到右的顺序输出。 ## 样例 #1 ### 样例输入 #1 ``` 4 4 1 2 3 ``` ### 样例输出 #1 ``` (4+((1+2)+3)) 19 3 6 10 ``` ## 提示 范围在题目上有说明。
时间: 2024-04-13 19:28:48 浏览: 210
根据题目要求,我们需要编写一个程序来给给定的正整数序列添加括号,求出使中间和之和最小的添括号方法。
以下是一个示例的Python代码实现:
```python
def add_parentheses(n, nums):
# 初始化中间和列表
intermediate_sums = []
# 初始化括号方法字符串
parentheses = ""
# 逐个遍历数字
for i in range(n):
# 将当前数字添加到括号方法字符串
parentheses += str(nums[i])
# 如果不是最后一个数字,则添加括号
if i < n - 1:
parentheses += "+("
# 更新中间和列表
intermediate_sums.append(sum(nums[:i+1]))
# 添加右括号
parentheses += ")" * (n - 1)
# 计算最终的中间和之和
total_sum = sum(intermediate_sums)
return parentheses, total_sum, intermediate_sums
# 读取输入
n = int(input())
nums = list(map(int, input().split()))
# 调用函数并输出结果
parentheses, total_sum, intermediate_sums = add_parentheses(n, nums)
print(parentheses)
print(total_sum)
print(" ".join(map(str, intermediate_sums)))
```
你可以将上述代码保存为一个Python文件(例如`add_parentheses.py`),然后运行该文件并输入题目所需的输入数据,即可得到相应的输出结果。
希望能对你有所帮助!如果有任何疑问,请随时提出。
阅读全文