首页 > 试题广场 >

表达式求值

[编程题]表达式求值
  • 热度指数:25472 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
今天上课,老师教了小易怎么计算加法和乘法,乘法的优先级大于加法,但是如果一个运算加了括号,那么它的优先级是最高的。例如:
1+2*3=7
1*(2+3)=5
1*2*3=6
(1+2)*3=9
现在小易希望你帮他计算给定3个数a,b,c,在它们中间添加"+", "*", "(", ")"符号,能够获得的最大值。

输入描述:
一行三个数a,b,c (1 <= a, b, c <= 10)


输出描述:
能够获得的最大值
示例1

输入

1 2 3

输出

9
头像 牛客题解官
发表于 2020-06-04 14:36:42
精华题解 题目难度:一星考察点:枚举 方法1:枚举 分析:我们将所有的可能情况列举出来然后取得最大值,一共有如下6种情况:(1). ans = a + b + c;(2). ans = a + b * c;(3). ans = a * b + c;(4). ans = a * b * c;(5). ans 展开全文
头像 白色高跟鞋
发表于 2020-04-26 16:58:15
简单问题,可以进行推广:其一,本题中只有三个数,因此直接枚举;其二,若有n个数,则是个dp问题。 # 3个数直接枚举 from functools import reduce a, b, c = map(int, input().split()) all_plus = sum([a, b, c]) 展开全文
头像 张映彬
发表于 2021-02-19 14:47:28
解题思路:该题目可以使用穷举法,因为只有3个数字,但是如果多个数字则需要我们使用动态规划动态规划解法:在n个数中,我们可以通过改变一个参数r *来对数字进行分组,比如说总共有4个数,1,2,3,4*当r=2时,可以为 12 23 34 总共有三组这时候我们可以计算每一组内的最大值当r=3时,可以 展开全文
头像 苏觅云
发表于 2022-05-22 22:34:54
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int[] arr = 展开全文
头像 Nobody_else_
发表于 2020-05-04 20:56:09
个人感觉还是挺简洁的 import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner scanner = new Scanner(System.in); 展开全文
头像 苏觅云
发表于 2022-05-22 22:38:01
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int[] arr = 展开全文
头像 LJian168
发表于 2021-08-17 17:57:52
动态规划 第一步:确定状态(确定dp数组及含义) 数值型dp[i][j]:表示从数组下表i到下表j之间数字的最大值。第二步:转移方程 在确定递推公式时,就要分析如下两种情况获得dp[i][j]的值。 第一种是dp[i][k]+dp[k+1][j]两者相加的结果其中k取值范围为[i,j); 第二种 展开全文
头像 我不打朋友圈
发表于 2022-01-17 22:20:38
import java.io.; public class Main { public static void main(String[] args) throws IOException{ BufferedReader bf = new BufferedReader(new InputStream 展开全文
头像 laglangyue
发表于 2020-05-19 20:03:45
数学思路:乘法的定义为多个加法,当包含1的时候,乘法才小于加法。 import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner sc = new S 展开全文
头像 牛客289281343号
发表于 2020-04-21 10:03:25
解题思路:考虑两种情况:第一种是三个数里有1,第二种是三个数全不为1。对于第一种情况,出现1就用加法,将1与其相邻的最小的元素相加后其余用乘法;对于第二种情况,三个数连乘。import java.util.;public class Main{ public static void main( 展开全文