蓝桥杯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;
}
    
posted @ 2020-03-07 19:19  aaaaassss  阅读(140)  评论(0编辑  收藏  举报