表达式求值 java

题目描述

今天上课,老师教了小易怎么计算加法和乘法,乘法的优先级大于加法,但是如果一个运算加了括号,那么它的优先级是最高的。例如:

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
import java.util.Scanner;

public class Main {
    /**
     * 由于数据量较小这里模拟出所有的情况即可。
     */
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int a, b, c;
        a = scanner.nextInt();
        b = scanner.nextInt();
        c = scanner.nextInt();
        scanner.close();
        int maxResult = Integer.MIN_VALUE;
        for (int k=0; k<2; ++k) {
            for (int i = 0; i < 2; ++i) {
                int temp;
                if (i == 0) {
                    temp = a + b;
                } else {
                    temp = a * b;
                }
                for (int j = 0; j < 2; ++j) {
                    int result;
                    if (j == 0) {
                        result = temp + c;
                    } else {
                        result = temp * c;
                    }
                    if (result>maxResult) {
                        maxResult = result;
                    }
                }
            }
            // 交换ac 的值顺序
            int changeTemp = a;
            a = c;
            c = changeTemp;
        }
        System.out.println(maxResult);
    }
}

 

你可能感兴趣的:(基础数学,Java学习,牛客)