【Python训练营】Python每日一练----第26天:后缀表达式
【摘要】 【Python训练营】Python每日一练----第26天:后缀表达式
📢📢📢📣📣📣
🌻🌻🌻Hello,大家好我叫是Dream呀,一个有趣的Python博主,多多关照😜😜😜
🏅🏅🏅2021年度博客之星TOP100,2021年度博客之星领域TOP5,Python领域优质创作者,欢迎大家找我合作学习(文末有VX 想进学习交流群or学习资料 欢迎+++)
💕入门须知:这片乐园从不缺乏天才,努力才是你的最终入场券!🚀🚀🚀
💓最后,愿我们都能在看不到的地方闪闪发光,一起加油进步🍺🍺🍺
🍉🍉🍉“一万次悲伤,依然会有Dream,我一直在最温暖的地方等你”,唱的就是我!哈哈哈~🌈🌈🌈
🌟🌟🌟✨✨✨
@TOC
题目描述
题目描述
给定 N 个加号、M 个减号以及 N + M + 1个整数 ,小明想知道在所有由这 N 个加号、MM 个减号以及 N + M +1个整数凑出的合法的 后缀表达式中,结果最大的是哪一个?
请你输出这个最大的结果。
例如使用 1 2 3 + -,则 “2 3 + 1 -” 这个后缀表达式结果是 4,是最大的。
输入描述
第一行包含两个整数 N , M
第二行包含 N + M + 1个整数 A 。
输出描述
输出一个整,代表答案。
输入输出样例
示例
输入
1 1
1 2 3
输出
4
运行限制
最大运行时间:1s
最大运行内存: 256M
解题思路
- 这道问题首先要明确一点,输入的数据中可以有负数,这就要求我们 +或者-的时候要考虑括号的问题,怎样才能使我们要求的数据之和最大呢。
- 首先就是没有-号的时候,直接将输入的数据求和就可以啦;
- 当有-号出现的时候,我们举例进行观察:a1 < a2 < a3 < a4 < a5 < a6。
- 一个"-“号:(a1 + a2 + a3) - (a4 + a5 + a6)
两个”-“号:(a1 + a2 + a3) - (a4 + a5) - a6
三个”-“号:(a1 + a2 + a3) - a4 - a5 - a6
四个”-“号:(a1 + a2) - (a4 - a3) - a5 - a6
五个”-"号:a1 - (a5 - a2) - (a4 - a3) - a6
我们可以发现一件神奇的事情,上面几个5个式子全部都是相等的,都等价于a1 + a2 + a3 - a4 - a5 - a6。那么简言之,就是我们只需要讨论一个减号的时候就可以解决所有减号的问题啦! - 1.如果所有的数都是正数:那么 (a2 + a3 + a4 + a5 + a6) - (a1) 既是最大的结果
2.如果所有的数都是负数:那么 (a6) - (a1 + a2 + a3 + a4 + a5) 既是最大的结果,等价于 (abs(a1) + abs(a2) + abs(a3) + abs(a4) + abs(a5)) - abs(a6),跟第1种有点类似。
3.如果有正有负,那么 (a1 + a2 + a3) - (a4 + a5 + a6),其中a1、a2、a3是正数,a4、a5、a6是负数,既是最大的结果,等价于 (a1 + a2 + a3) + abs(a4) + abs(a5) + abs(a6) - 所以说我们进行总结: 1.如果所有的数都是正数:最后的 a6 - a1 等价于 abs(a1 - a6) 2.如果所有的数都是负数,也是 abs(a1) - abs(a6),等价于 abs(a1 - a6) 3.如果有正有负:是 a1 + abs(a6),等价于 a1 - a6,肯定是正数,所以也可以加上绝对值号:abs(a1 - a6)
源码分享
# Time : 2022/2/21 14:41
# File : 后缀表达式.py
# Author : 是Dream呀!
# VX : Xu18300396393
# 一万次悲伤,依然会有Dream,我一直在最温暖的地方等你!
N,M = map(int,input().split())
list1 = list(map(int,input().split()))
if M == 0:
print(sum(list1))
else:
sum = 0
list1.sort()
for i in range(1,N+M):
sum += abs(list1[i])
sum += abs(list1[-1]-list1[0])
print(sum)
学习总结
- 单行对多个多个变量进行赋值:
N,M = map(int,input().split())
- 总结规律会使一道很复杂的题目变得很简单!
🏅今天是我在Python训练营的第 26 天,希望每天都能见到最棒的你🏅
🌲🌲🌲 好啦,这就是今天要分享给大家的全部内容了
❤️❤️❤️如果你喜欢的话,就不要吝惜你的一键三连了~
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)