蓝桥杯18模拟C
结果填空:加减乘
请对于下面式子进行填空,填入加减乘,使这个表达式成立。
1 2 3 4 5 6 7 8 9 10 = 0
请输出一共有多少种方案可以使得表达式成立。
要注意结合律。
code:
#include<iostream>
using namespace std;
int f[11]={0,1,2,3,4,5,6,7,8,9,10};
int a_b(int a,char c,int b) { if(c=='+') return a+b; return a-b;}
int dfs(int a,char c,int b,int cnt)
{
if(cnt==11) return a_b(a,c,b)==0;
return dfs(a_b(a,c,b),'+',f[cnt],cnt+1)+dfs(a_b(a,c,b),'-',f[cnt],cnt+1)+dfs(a,c,b*f[cnt],cnt+1);
}
int main()
{
cout<<dfs(0,'+',1,2)<<endl;
return 0;
}