暑假期间,小明在外出游玩时经过了一条有趣的数学计算路,如下图所示。这条数学计算路以A为起点,D为终点,中间有B、C二个数字分岔路口。规定从A出发,顺次经过每个数字分岔路口,选择+、-、*、/ 四种运算符之一进行运算,当到达目的地D时,要求运算结果恰好等于E,现在请你帮助小明将所有符合上述条件的道路全部找出来。

输入只有一行,是5个用空格隔开的数,表示A、B、C、D和E的值(其中A、B、C、D都是1~9的数字,E是正整数)。
输出只有一行,有一个整数,表示符合条件的道路的总数。
1 2 3 4 10
2
我的代码(深搜):
#include<bits/stdc++.h>
using namespace std;
int n,a[11],ans,vis[11],f;
char x[11];
void dfs(int step,int sum){
if(sum==n){
// for(int i=1;i<=4;i++) cout<<x[i];
// cout<<endl;
ans++;
return ;
}
if(step>4) return ;
x[step]='+';
dfs(step+1,sum+a[step]);
x[step]='-';
dfs(step+1,sum-a[step]);
if(sum!=0){
x[step]='*';
dfs(step+1,sum*a[step]);
}
if(sum!=0){
x[step]='/';
dfs(step+1,sum/a[step]);
}
}
int main(){
for(int i=1;i<=4;i++) cin>>a[i];
cin>>n;
dfs(1,0);
cout<<ans;
return 0;
}