总结:深搜,改变的是+-*,数字可以利用数组,由于一共10个数,所以可以用做判断条件。然后继续判断是否满足等于0;
代码:
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
int ans=0;
int f[10]={1,2,3,4,5,6,7,8,9,10};
int deal(int a,char c,int b)
{
if(c=='+')
return a+b;
else
return a-b;
}
void dfs(int a,char c,int b,int step)
{
if(step==10)
{
if(deal(a,c,b)==0)
{
ans++;
}
return;
}
dfs(deal(a,c,b),'+',f[step],step+1);
dfs(deal(a,c,b),'-',f[step],step+1);
dfs(a,c,b*f[step],step+1);
}
int main()
{
dfs(0,'+',1,1);
printf("%d\n",ans);
return 0;
}