在5个1/3中,加上适当的运算符号和括号,使结果等于2/9

来源:百度知道 编辑:UC知道 时间:2024/05/18 00:36:58

(1/3+1/3+1/3-1/3)*(1/3)=2/9
_____________________________
编程实现的话,首先写出上式左部的语法树,参考语法树我们可以获得以下思路:五个操作数逐个参与运算,有四个操作符号,每个操作符有加减乘除四种情况,那么总共有4^4=256个分支,穷举结果与2/9比较,匹配则输出表达式。
算法如下:
typedif struct czf
{
int oprand1,oprand2,oprand3,oprand4;
}//依序四次操作的操作符,整型,1表示加,2表示减...
for(int c1=1;c1<=4;c1++)
{
for(int c2=1;c2<=4;c2++)
{
for(int c3=1;c3<=4;c3++)
{
for(int c4=1;c4<=4;c4++)
{
switch(c1)
case'1';case'2';case'3';case'4';...(略去部分)
goto switch(c2);
switch(c2)
case'1';case'2';case'3';case'4';...(略去部分)
goto switch(c3);
switch(c3)
case'1';case'2';case'3';case'4';...(略去部分)
goto switch(c4);
switch(c4)
case'1';case'2';case'3';case'4';...(略去部分)
if(result==(2/9))
{
cout<<c1<<c2<<c3<<c4<<endl;