难题一道
pascal吧
全部回复
仅看楼主
level 9
一题不懂的难题:
如下图所示,键入A,B,C,D,E的值,然后从A出发,顺次经过每个数字分岔路口,选择+、-、*、/四种运算符之一进行运算,达到目的地E时,运算结果恰好等于E,请你将所有符合上述条件的道路全部找出来。
输入:A、B、C、D和E的值(其中A、B、C、D都是1~9的数字,E是正整数)
输出:从A能到达E的所有道路代表的运算式(注意:前两步运算要加括号)
最后打印出道路的总数。
如:输入:A,B,C,D,E=1,2,3,4,10
输出:((1+2)+3)+4=10
((1*2)*3)+4=10
TOTAL=2
哪位大神前来帮助啊[点头][撒钱]
2014年05月25日 10点05分 1
level 4
用穷举行吗?
2014年05月25日 12点05分 2
level 9
已经会了,谢谢各位[点头]
2014年05月25日 12点05分 3
不会吧,刚刚想起来怎么做......[惊讶]
2014年05月28日 11点05分
level 4
楼主过目,这样对吗?(本人菜鸟);
var i,j,k:integer; a,b,c,d,e:real; total:integer;
function f(n,m:real;ysf:integer):real;
begin
case ysf of
1:f:=n+m;
2:f:=n-m;
3:f:=n*m;
4:f:=n/m;
end;
end;
begin
readln(a,b,c,d,e);
for i:=1 to 4 do
for j:=1 to 4 do
for k:=1 to 4 do
if f(f(f(a,b,i),c,j),d,k)=e then total:=total+1;
writeln(total);
end.
2014年05月28日 11点05分 4
对了,不过还要加“ 从A能到达E的所有道路代表的运算式”[真棒]
2014年05月28日 13点05分
1