把当时的代码放出来,大家共同学习,互相帮助
题目:
输入样例:
8
10 15 12 3 4 13 1 15
输出样例:
14
思路:
两个绳子对折相连,长度一定小于等于原来两绳长度和,两绳长度不同则必有损失,且越早折的绳子长度损失越多,所以把长绳越后折越好,只要将绳子按绳长升序排列即可,每次前两条绳连接后长度一定小于后面的,会一直保持升序,这样接到最后损失最小,绳最长。
代码如下:
# PAT 1070
n = int(input())
lst = list(map(int, input().split(' '))) # 将输入转为列表,字符转为整型
lst.sort() # 升序排列
max_len = int((lst[0] + lst[1]) / 2) # 赋初值
for i in range(2, n):
max_len = int((max_len + lst[i]) / 2)
print(max_len)