原题链接:https://ac.nowcoder.com/acm/contest/19304/N
题目描述
数据结构之神ccz又在出毒瘤数据结构了
神出了这样一个题:
给你三个数,在这三个数中间任意加或者是+,然后可以随便打括号,只要这个表达式合法
比如说1 2 3可以得到:
1+2*3=7
1(2+3)=5
123=6
(1+2)*3=9
不能改变这三个数的原顺序
最大化表达式的值
输入描述:
输入三行,每行一个数
分别表示a,b,c
输出描述:
输出一行一个数表示答案
示例1
输入
1
2
3
输出
9
送命题
乍一看需要判断的式子很多
但a+b*c的结构一定小于a+b+c或a*b*c
因此只需要判断
W=a+b+c;
X=a*b*c;
Y=(a+b)*c;
Z=a*(b+c);
四个式子的大小
懒得写if了能AC就行
#include <stdio.h> #include <iostream> #include <algorithm> using namespace std; int main() { int a,b,c,W,X,Y,Z; cin >> a; cin >> b; cin >> c; W=a+b+c; X=a*b*c; Y=(a+b)*c; Z=a*(b+c); printf("%d\n",max({X,Y,Z,W})); return 0; }
注意
输入要求换行,不要写成cin >> a >> b >> c;