列表

详情


WY65. 表达式求值

描述

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

原站题解

C 解法, 执行用时: 1ms, 内存消耗: 360KB, 提交时间: 2020-08-14

#include<stdio.h>
int main()
{	
	int a,b,c,max=0,i;
	int d[4];
	scanf("%d %d %d",&a,&b,&c);
	*d = a+b*c;
	*(d+1) = a*(b+c);
	*(d+2) = a*b*c;
	*(d+3) = (a+b)*c;
		for(i=0;i<4;i++)
		{if(d[i]>max)
		max=d[i];}
	printf("%d\n",max);
	return 0;
}

C 解法, 执行用时: 1ms, 内存消耗: 364KB, 提交时间: 2020-12-14

#include<stdio.h>
int main(void)
{
    int a[3],temp;
   scanf("%d%d%d",&a[0],&a[1],&a[2]);
    for(int i=0;i<2;i++)
    {
        for(int j=1;j<3-i;j++)
        {
            if(a[i]>a[j])
            {
                temp=a[i];
                a[i]=a[j];
                a[j]=temp;
            }
        }
    }
    if(a[0]==1)
    {
        printf("%d\n",((a[0]+a[1])*a[2]));
    }
    else
    {
        printf("%d\n",(a[0]*a[1]*a[2]));
    }
    return 0;
}

上一题