背景:
记得上星期教主lws说今年DLOI’(就是DaolaoOI)蛮有意思的,并给我们展示了第六题:Minmax说这题你们可以做一下。
——台下,大佬们一片唏嘘,说:这不就是贪心吗
——Lws笑了,用那支白板笔敲了敲黑板:“是贪心啊,但关键是怎么贪呢?”
题目描述:
琳琳正在研究一个只有加法和乘法的算术式,假设她可以合法的任意加括号,你能帮她能求出这个算术式可能得到的最大值和最小值吗?参与运算的数据项都是正整数,数据项的个数不超过10(即每个数据项的大小为1到10)。
输入格式:
输入数据只有一行,是一个合法的算术式,两项之间都有一个空格。
输出格式:
输出数据有两行,第一行为能得到的最大值,第二行为能得到的最小值。
样例输入:
2 + 3 * 5 + 4 =
样例输出:
45
21
贴心的样例解释:
(2+3)*(5+4)=45
2+3*5+4=21
过程:
首先上来,我在草稿本上随便写几个算式,经过我几番精密的研究,发现似乎有这个规律:
基本的想法:尽可能的用尽量大的数作乘法运算,是最大的,反之是最小的(?)
最大解决方案:尽可能把作加法运算的数“利用括号”结合起来,遇到乘号,乘起来,似乎就是最大的。
最小解决方案:似乎,按照原式运算,就是最小的,因为我想:乘在一起的,不可能用括号分开嘛。
结果:
写了一个多小时,各种不爽,字符串处理烦成狗,但终于写完了,只有七十分,绞尽脑汁了,各位大佬麻烦帮我看看:
贴代码:
#include <cstdio>
#include <iostream>
#include <string>
#include <cstring>
using